2012年12月7日金曜日

MySQL5.6.8(Red Hat系リポジトリ)の起動が失敗する

wingリポジトリさんのメーリングリストでご指名いただいたので調べた時のメモ。


MySQL5.6.8のrpmをビルドしてインストールすると、/etc/init.d/mysqld startでコケるらしい。
MySQL5.5.xを入れてあって、アンインストールしてからだとコケないらしい。
MySQL5.5.xを入れてあってアンインストールした後、/var/lib/mysqlを消してからだとコケるらしい。

メールに貼ってあったエラーログには、


ERROR: 1005  Can't create table 'db' (errno: 13)

errno: 13ってPermission Deniedだなぁ。。
MySQL5.5.xの作った/var/lib/mysqlを残しておけばコケないらしいので、
やっぱり/var/lib/mysqlを作る時とかのパーミッションがおかしいんだろうなぁ。
それでmysql_install_dbがコケてるのかしら。
でも/etc/init.d/mysqld startじゃなくて直接/usr/bin/mysql_install_dbを叩くと通るなぁ。

5.6系のmysql_install_dbはPerlスクリプトなので、シバンを#!/usr/bin/perl -dに書き換えて、
$DB::single=1をちょこちょこ追加して様子を見る。
Perl版mysql_install_dbがおかしいってどこかで見た気がするなぁとか思いながら。
(記憶にあったのはriywoさんのBlogだった。

うん、確かに/var/lib/mysqlをmysql:mysqlにした後、
/var/lib/mysql/mysqlをroot:rootで作ってその後chownされてないな。

Bugsにも上がってる。次回のビルドでは直るって。

取り敢えずBugsに上がっていた修正を自分のmysql_install_dbに入れて、
diff -c取ってWING☆さんに丸投げしてみた。

こういう連携で何かが上手く動くのって、とても楽しかったりするよね。


ところで、WINGリポジトリのMySQLはepelのspecファイルとかを流用して作ってると聞いていたけど、
epel系のrpmってインストール時にmysql_install_dbじゃなくて、/etc/init.d/mysqldが叩くのね。
ちょっと新鮮でした。

1 件のコメント :

  1. WING☆っすw

    mysqlはremiベースで、epelに合わせるようにしてあるけど、そこまで細かく見てなかったかもです。
    今度、細かく中身見てみるっす。

    今回助けて頂いて感謝です!

    返信削除