尝试更改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.
在对权限的一些普遍混淆之后,OP意识到问题不在于他没有权限和路径权限,而是AppArmor阻止MysqL读取和写入新位置.
这是他的解决方案:
首先停止MysqL所以当你摆弄时没有什么奇怪的事情发生:
$sudo stop MysqL
然后将所有数据库目录移动到新的主目录:
$sudo mv /var/lib/MysqL/<all folders> /new-MysqL-dir/
不要移动文件,它们将由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