我正在运行 ubuntu 12.04,并将我的 mysql 服务器的数据目录(保留相同的所有权和权限)从 /var/lib/mysql 移动到 /etc/mysql/my.cnf 中的 /u/apps/mysql,然后我更新了 /etc/apparmor.d/usr.sbin.mysqld 以包含:
/u/apps/mysql r,
/u/apps/mysql/** rwk,
但出现错误:
InnoDB: Reading tablespace information from the .ibd files...
130906 13:55:31 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 .
InnoDB: File operation call: 'opendir'.
InnoDB: Cannot continue operation.
所以我禁用了 apparmor,它就启动了。看起来它想要打开的目录是“。”我原本以为是 /u/apps/mysql,但显然不是。自从更改 apparmor 配置后,它肯定会更进一步,但我不知道它被什么卡住了。有人知道发生了什么吗?谢谢...
答案1
看来您对 mysql datadir 存在权限问题
130906 13:55:31 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.
您能否更改 datadir 的权限并将所有权更改为 mysql。完成后,重新启动 Mysql。
答案2
好吧,我不确定为什么当原始条目是“/var/lib/mysql/** rwk”并且 /u/apps/mysql 显然属于 mysql.mysql 时,apparmor 会对“/u/apps/mysql/** rwk”犹豫不决,但是当我将设置更改为“/u/apps/** rwk”并且它起作用时