Skip to main content

One post tagged with "AppArmor"

View All Tags

· 2 min read

Ubuntu 11.04のMySQLのデータディレクトリを変更したらmysqlが起動しなくなった! 原因はAppArmorによるディレクトリアクセスの許可がなかったから。 いつの間にかAppArmorなんてツールが管理してくれるようになったのね。

環境

OS: Ubuntu 11.04 旧データディレクトリ: /var/lib/mysql 新データディレクトリ: /data_dir/mysql

データディレクトリ移動

権限などそのままコピー。
sudo service mysql stop
cp -Rp /var/lib/mysql /data_dir/mysql

設定変更

データディレクトリを変更。
cd /etc/mysql
diff -u my.cnf.org my.cnf
-datadir        = /var/lib/mysql
+datadir = /data_dir/mysql

ここで、MySQLがアクセス可能なディレクトリを追加。

cd /etc/apparmor.d
diff -u usr.sbin.mysqld.org usr.sbin.mysqld
--- usr.sbin.mysqld.org 2011-07-31 17:36:15.151583572 +0900
+++ usr.sbin.mysqld 2011-07-31 19:21:48.884921627 +0900
@@ -29,8 +29,8 @@
/usr/share/mysql/** r,
/var/log/mysql.log rw,
/var/log/mysql.err rw,
- /var/lib/mysql/ r,
- /var/lib/mysql/** rwk,
+ #/var/lib/mysql/ r,
+ #/var/lib/mysql/** rwk,
/var/log/mysql/ r,
/var/log/mysql/* rw,
/var/run/mysqld/mysqld.pid w,
@@ -38,6 +38,9 @@

/sys/devices/system/cpu/ r,

+ /data_dir/mysql/ r,
+ /data_dir/mysql/** rwk,
+
# Site-specific additions and overrides. See local/README for details.
#include <local/usr.sbin.mysqld>
}

MySQLのアクセス可能なディレクトリを追加したので、AppArmorを再起動。

sudo service apparmor restart

MySQL起動

MySQLを再起動して完了。
sudo service mysql start