MySQLを起動させるとAnother MySQL daemon already runningと出る件
Vagrantで開発機を立ち上げてWordPressにアクセスしたらエラーになった。
Warning: mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111) in /var/www/wordpress/wp-includes/wp-db.php on line 1147
データベース接続確立のエラー
これは wp-config.php ファイルのユーザー名とパスワードが間違っているか、localhost のデータベースサーバーに接続できないかのどちらかを意味します。ホストのデータベースサーバーがダウンしているのかもしれません。
なんか、MySQLが立ち上がっていないらしい。
状況を確認する
$ sudo service mysqld status
mysqld is stopped
たしかに落ちてる。
$ sudo service mysqld start
Another MySQL daemon already running with the same unix socket.
Starting mysqld: [FAILED]
起動を試みるも、他で起動しているとのこと。
そんなはずはないんだが。
$ ps -ef | grep "[m]ysql"
$
やっぱり起動はしていない。
一旦stopさせて、ゴミを消してstartすればいいのかな?
$ sudo service mysqld stop
Stopping mysqld: [ OK ]
$ sudo service mysqld start
Another MySQL daemon already running with the same unix socket.
Starting mysqld: [FAILED]
ダメだった。
ソース嫁
$ view /etc/rc.d/init.d/mysqld
if [ -S "$socketfile" ] ; then
echo "Another MySQL daemon already running with the same unix socket."
action $"Starting $prog: " /bin/false
return 1
fi
$socketfile
が有ったら起動中と判断しているらしい。
しかも、
if [ ! -f "$mypidfile" ]; then
# not running; per LSB standards this is "ok"
action $"Stopping $prog: " /bin/true
return 0
fi
停止処理の始まりでは、$mypidfile
が無かったら$socketfile
の削除しないらしい。
解決
$ sudo rm -f /var/lib/mysql/mysql.sock
mysql.sock
を削除して、
$ sudo service mysqld start
Starting mysqld: [ OK ]
起動できた。
予防策
$ view /etc/rc.d/init.d/mysqld
if [ ! -f "$mypidfile" ]; then
# not running; per LSB standards this is "ok"
rm -f "$socketfile"
action $"Stopping $prog: " /bin/true
return 0
fi
stop()内で$mypidfile
が無かったら$socketfile
を削除するようにしておこう。
これで安心かな。