mysql启动失败,Can't create/write to file 'xxx.pid' (Errcode: 13)

ubuntu下,mysql默认数据库存放路径是 /var/lib/mysq。

一直以来都由着它默认没管,可近来发现 /var 的空间不足了,而数据库是一直增长的,只好考虑转移一下。

于是移动了数据文件,修改了权限,修改了my.cnf,然后尝试启动,却发现无法启动起来。

查看错误日志文件,发现好像是权限的问题:

[Note] Plugin 'FEDERATED' is disabled.

/usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)

[ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.

[ERROR] /usr/sbin/mysqld: Can't create/write to file '/data/mysql/zhetenga.com.pid' (Errcode: 13)

[ERROR] Can't start server: can't create PID file: Permission denied

于是我再检查了权限,发现权限不应该有任何问题的,但仍然无法启动,好奇怪。

最后 baidu google了无数次后终于得到了答案,原来是ubuntu下的 apparmor 搞的。

最后通过以下修改终于让mysql启动成功了。

vi /etc/apparmor.d/usr.sbin.mysqld

/var/lib/mysql r,

/var/lib/mysql/** rwk,

中的 /var/lib/mysql 修改为新的路径。

一直以来用 centos 也出现过类似的错误,都是目录或文件的权限问题,而ubuntu除了目录和文件权限外,还有这个配置文件要改。

真折腾!

2011年08月31日