MySQLのデータディレクトリを変更
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