MySQLを停止して、起動しようとしたらエラーした
- 停止
/etc/rc.d/init.d/mysql stop
した後に
- 起動
/etc/rc.d/init.d/mysql start
ここで失敗。何故か起動できない(泣)
試す
まずは、mysqlとか打ってみる。当然起動しないで、以下のようにエラーする。
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
エラーメッセージでググる
このエラーが発生する原因には以下の3つが考えられます。
・MySQLサーバーが起動していない
・MySQLサーバーで使っているUNIXソケットとクライアントソフトで使っているUNIXソケットのパスが違う
・なんらかの理由でソケットファイルが削除されている
3番目のやつが怪しいと思い(でも実際は違った)、ソケットファイルをfindしてみる。
find -name mysql.sock
何も返ってこなかったので、ソケットファイルが消えたんだと勘違い。
ソケットファイルは起動時にできるものなので、今回のように起動できないエラーとは関係ない。
エラーログを見てみる
最初からそうしろよーという感じですね。ごめんなさいm(_ _)m
MySQLのエラーログは、ホスト名.errというファイルらしいのでfindしてtailしてみた。
- エラーログ
080326 11:23:53 mysqld started
080326 11:23:53 [ERROR] /usr/sbin/mysqld: unknown variable 'long_query_time = 3'
げげっ。unknown variableで怒られている。原因はこれだ。
設定ファイルを見に行くと・・・
- my.cnf
[mysqld]
set-variable = long_query_time = 3
コメントアウトしてみて起動する。・・・お、起動できた☆
最終的には以下のように書き直して起動。
- my.cnf修正版
#config slow-query-log
log-slow-queries = /var/log/mysql/mysql-slow.log
long_query_time=3
log-queries-not-using-indexes
起動できた。ソケットファイルも起動したらできた。
[root@server/]find -name mysql.sock
./var/lib/mysql/mysql.sock
最初mysqlで「Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'」とでたのは、単にmysqldが起動してなかったからですね。恥ずかしいorz
また、今回起動できなかったということは、前回「set-variable」って書いた時には再起動していなかった可能性が高い。これまた悲しい。