読者です 読者をやめる 読者になる 読者になる

エロサイトの作り方

2013年11月から勉強しながらエロサイトを作っています。

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を削除するようにしておこう。

これで安心かな。