Tech Racho エンジニアの「?」を「!」に。
  • インフラ
  • 開発

MySQLのdata_dirをシンボリックリンクに変更したらplugin.frmが無いと言われて起動できなくなる問題の対処方法

タイトルが長いですが,そのままの内容.Ubuntu 10.04のMySQL環境において,MySQLのdata_dir(/var/lib/mysql)を別diskに移したいと思い,以下の手順で作業を行った.

  1. MySQLを止める: # service mysql stop
  2. MySQLのdata_dirを新パーティションにコピー: # cp -rp /var/lib/mysql /mnt/fasterdisk/mysql
  3. 元のMySQLデータディレクトリをリネーム: # mv /var/lib/mysql /var/lib/mysql.old
  4. /var/lib/mysqlからコピーしたパーティションへシンボリックリンク: # ln -s /mnt/fasterdisk/mysql /var/lib/mysql
  5. MySQLを起動: # service mysql start
  6. 起動しない\(^o^)/

このときのエラーメッセージ(/var/log/mysql/error.log)の内容は以下の通り.


111124 15:25:46 [Note] Plugin 'FEDERATED' is disabled.
^G/usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
111124 15:25:46 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
111124 15:25:46 InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.

plugin.frmが無いとか色々言っているが,結局原因はapparmorだったので,最終的には/etc/apparmor.d/usr.sbin.mysqlに以下の行を追加したら動いた.ちなみに「mysql_upgradeしてね」的なメッセージが出ているが,そもそもMySQLdが正常に起動できていないのでmysql_upgradeできない.


/mnt/fasterhdd/mysql/ r,
/mnt/fasterhdd/mysql/** rwk,

参考: http://serverfault.com/questions/168957/changing-mysql-data-directory-in-ubuntu-server-10-04

この手の問題はRedhat系ディストリビューションではSELinuxで良く発生していたが,Debian系のディストリでもあるんだなあ.ということで.

CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。