
嘗試變更 ubuntu 伺服器 10.04 中的資料目錄時出現下列錯誤。
100809 19:33:00 [Note] Plugin 'FEDERATED' is disabled.
/usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
100809 19:33:00 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
100809 19:33:00 InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'create'.
InnoDB: Cannot continue operation.
答案1
在對權限進行了一些普遍的混淆之後,OP 意識到問題不是他沒有權限和路徑權限,而是 AppArmor 阻止 MySQL 讀取和寫入新位置。
這是他的解決方案:
首先停止 MySQL,這樣當你擺弄時就不會發生任何奇怪的事情:
$ sudo stop mysql
然後將所有資料庫目錄移至新目錄:
$ sudo mv /var/lib/mysql/<all folders> /new-mysql-dir/
不要移動文件,它們將由mysql生成,只需移動資料夾(即資料庫)。
然後禮貌地請求 AppArmor 允許 mysql 使用新資料夾:
$ sudo vim /etc/apparmor.d/usr.sbin.mysqld
>> add lines
/new-mysql-dir/ r,
/new-mysql-dir/** rwk,
然後告訴mysql datadir已經移動了:
$ sudo vim /etc/mysql/my.cnf
>> change the line
datadir=/var/lib/mysql
>> to
datadir=/my-new-db-dir/
注意:根據您的資料庫設置,您可能還需要更改 innodb-data-home-dir 等。
然後重新啟動AppArmor以讀取新設定:
$ sudo /etc/init.d/apparmor restart
並使用新的 datadir 再次啟動 MySQL:
$ sudo start mysql