第二個硬碟,/var/lib/mysql 擁有者在安裝時是 nvidia-persistenced,啟動時是 mysql?

第二個硬碟,/var/lib/mysql 擁有者在安裝時是 nvidia-persistenced,啟動時是 mysql?

我有第二個硬碟,這是我的舊作業系統。當我啟動它時, /var/lib/mysql 資料夾是 mysql:mysql ,但是當我在新作業系統中安裝它(LVM)時,它是 nvidia-persistenced:vboxusers 。

我想對新系統執行 cp -pr,但當權限是這樣時卻不能。

有任何想法嗎?

答案1

使用者名稱其實只是到儲存在/etc/passwd.類似地,群組名稱從 映射到 GID /etc/group。 ID 在需要時決定。 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 到使用者和群組的映射,使它們相同(然後修復新系統中的相應檔案)。這將是相當乏味的。

相關內容