White scenery @showyou, hatena

If you have any comments, you may also send twitter @shsub or @showyou.

Ubuntuでmysqlをapt-get dist-upgradeしたらエラーが出る

なんかCentOSSElinux並にひっかかんじゃないのかこれ・・

環境 Ubuntu 12.04 LTS

MySQLのデータ設置ディレクトリを既存とは別のとこに設定

apparmor使ってればどのOSでも起きそう

症状 apt-get dist-upgradeでmysql-server周りの更新に失敗する(=起動できなくなる)

原因 apparmorの設定が更新されて、別のディレクトリを見に行ってくれなくなった。

判別方法、対策

 apt-get dist-upgradeでmysql-serverがerrorを返す

 コンソールログから、mysql自体が正常に立ち上がらなくなっていることを確認

 次にmysql自体を単独で立ち上げてみる。

$ sudo /etc/init.d/mysql start

..

失敗

次にdmesgでログを見る。

init: mysql main process (14979) terminated with status 1

type=1400 audit(1397156184.744:116): apparmor="DENIED" operation ="open" parent=1 profile="/usr/sbin/mysqld" name="...

とかでてくる。ここまでくればapparmorに問題があるのがわかるので、/etc/apparmor.d/usr.sbin.mysqlとかを編集。ちょうどupgrade前のも残ってくれてるのでそこから必要な箇所を移す。自分の場合はこんな感じ。

/data2/mysql/ r,

/data2/mysql/** rwk,

 編集したらmysqlを単独起動。OKならばdist-upgrade。