Can't connect to local MySQL server through socketを解決


ある日、Cron Daemonからエラーを示すメールが届くようになりました。

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)

実際DBへ接続できなくなっていました。ブレーカーが落ちたせいかな・・・?

解決法はちょっとググればでてきましたが、どれも自分のケースにはマッチせず。そのため、自分で試行錯誤して解決しました。と言っても、やったことは単純です。

まずはservice mysqld statusをすると、既にサービス起動中だと言われる。けど、ps axで調べるとプロセスはいない。service mysqld stopすると成功するけど、改善はされず何度でもstopできる・・・という状態でした。

そこでsocketファイルのパスを変更することに。

vi /etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

上記のmysql.sockをmysql2.sockに変更して、service mysqld startしたところ無事起動しました。mysql.sockはプロセスが生成されると生成されるもののようです。プロセスがいないのにmysql.sockが残っていたのが問題だったのかな?

このままでは気になるので、一旦service mysqld stopして、my.cnfを元に戻す。その後、mysql.sockをrmして、service mysqld startしたところ、全てが元通りになりました。

最初からrm mysql.sockしておけばよかったのかな。

完璧に把握できたわけじゃないですが、自分の場合はこれで直りました。