第二个硬盘,/var/lib/mysql 所有者在安装时是 nvidia-persistenced,启动时是 mysql 吗?

第二个硬盘,/var/lib/mysql 所有者在安装时是 nvidia-persistenced,启动时是 mysql 吗?

我有第二个硬盘,里面装的是旧操作系统。启动时,/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 与用户和组的映射,使它们相同(然后修复新系统中的相应文件)。这会相当繁琐。

相关内容