MySQLのデータディレクトリを変更

Ken published on
2 min, 284 words

Categories: Linux

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