我有第二个硬盘,里面装的是旧操作系统。启动时,/var/lib/mysql 文件夹是 mysql:mysql,但当我在新操作系统中安装 (LVM) 时,文件夹是 nvidia-persistenced:vboxusers。
我想对新系统执行 cp -pr,但是当权限像这样时无法执行。
有任何想法吗?
答案1
用户名实际上只是存储在 中的 UID 的映射/etc/passwd
。类似地,组名从 映射到 GID。ID/etc/group
是在需要时决定的。0 始终是 root,但几乎所有其他内容都是在创建用户和组时决定的。
这些 *ID 是近乎任意的整数,系统将其解释为定义的用户和组。这些 ID 是在需要时决定的。0 始终是 root,但几乎所有其他内容都是在创建用户和组时决定的。
当文件写入磁盘时,这些 UID 和 GID 值会存储在磁盘上,而不是字符串表示。这就是这里发生的情况。您的二次安装中的用户→UID 和组→GID 映射与第一次安装中的 UID 不一致。它将文件所有权映射到错误的用户。
如果您的旧安装永远不会成为此因素,我只需将所有权重新映射到 mysql 用户:
sudo chown --recursive mysql: /var/lib/mysql
我检查了真实世界的 MySQL 安装,并且我的所有文件/var/lib/mysql
均归所有,mysql:mysql
所以我认为这应该是准确的。
如果要再次使用旧安装(例如双启动式配置),则需要更具创造性。在这种情况下,您可能需要更改 UID 和 GID 与用户和组的映射,使它们相同(然后修复新系统中的相应文件)。这会相当繁琐。