ubuntu 下修改 mysql 库文件目录不能启动

/var的目录过小,按照公司的安装习惯,将mysql 的 datadir切换到 /home/mysql,发现无法启动,日志中出现:

Apr 30 21:56:03 n1 kernel: [41411.680225] init: mysql post-start process (31902) terminated with status 1
Apr 30 21:56:03 n1 kernel: [41411.691791] type=1400 audit(1335794163.366:298): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=31935 comm="apparmor_parser"
Apr 30 21:56:03 n1 kernel: [41411.707244] type=1400 audit(1335794163.382:299): apparmor="DENIED" operation="mknod" parent=1 profile="/usr/sbin/mysqld" name="/home/mysql/n1.lower-test" pid=31939 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=0 ouid=0
Apr 30 21:56:03 n1 kernel: [41411.707381] type=1400 audit(1335794163.382:300): apparmor="DENIED" operation="mknod" parent=1 profile="/usr/sbin/mysqld" name="/home/mysql/n1.lower-test" pid=31939 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=0 ouid=0
Apr 30 21:56:03 n1 kernel: [41411.711149] type=1400 audit(1335794163.386:301): apparmor="DENIED" operation="open" parent=1 profile="/usr/sbin/mysqld" name="/home/mysql/mysql/plugin.frm" pid=31939 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=107 ouid=107
Apr 30 21:56:03 n1 kernel: [41411.736333] type=1400 audit(1335794163.410:302): apparmor="DENIED" operation="open" parent=1 profile="/usr/sbin/mysqld" name="/home/mysql/ibdata1" pid=31939 comm="mysqld" requested_mask="rw" denied_mask="rw" fsuid=107 ouid=107

原来是 apparmor 做了限制。AppArmor 是内核的一个安全增强模块,对程序存取资源进行限制。解决方法:

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

/home/mysql/ r,
/home/mysql/** rwk,

重新启动mysql,正常。

此条目发表在DEVOPS分类目录。将固定链接加入收藏夹。