我已将所有内容移至/var/lib/mysql
,/500gb/mysql
并创建了从一个到另一个的符号链接。然后,我对符号链接和执行了chown mysql:mysql
and chmod 777
(必要时同时使用 -h 和 -R)。/var/lib/mysql
/500gb/mysql
ls -al /var/lib
给我:
lrwxrwxrwx 1 mysql mysql 15 2011-07-27 12:55 mysql -> /500gb/mysql
当我尝试启动 MySQL ( service mysql start
) 时,出现以下信息/var/log/mysql/error.log
:
110727 12:48:32 [Note] Plugin 'FEDERATED' is disabled.
/usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
110727 12:48:32 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
110727 12:48:32 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: 'open'.
InnoDB: Cannot continue operation.
/500gb/mysql/ibdata1
和都/500gb/mysql/mysql/plugin.frm
存在,并且都归 拥有mysql
。这是什么情况?
此外,MySQL 似乎偶尔会破坏我的符号链接。在多次启动失败后,它会消失并变成常规目录。
我也尝试过编辑我的/etc/mysql/my.cnf
设置,datadir = /500gb/mysql
但没有成功。
有什么想法吗?谢谢。
答案1
事实证明,这Apparmor
把事情搞砸了。我们不得不编辑这个文件:/etc/apparmor.d/usr.sbin.mysql
。
答案2
许多 UNIX 守护程序会拒绝处理访问权限太宽松的文件(太多人拥有读/写权限)。尝试运行:
find /500gb/mysql -type f -exec chmod a-x {} \;
chmod -R u+rwX,go-rwx /500gb/mysql
chown -Rh mysql:mysql /500gb/mysql
然后启动MySQL。