MySQLが
Can't connect to local MySQL server through socket '/tmp/mysql.sock'
だの
ERROR! The server quit without updating PID file
だの言われたときにやること。
macOS 10.14.5
MySQL
#経緯
突然起動しなくなった。
$ mysql -u root -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
なんでや。
$ mysql.server restart
ERROR! MySQL server PID file could not be found!
Starting MySQL
.. ERROR! The server quit without updating PID file (/usr/local/var/mysql/****.local.pid).
ググってみても、だいたいみんな再インストールとか言うやん。
やってみる
$ sudo touch /tmp/mysql.sock
見事に
Can't connect to local MySQL server through socket '/tmp/mysql.sock'(38) #2だったのが38に
なりました。
$ sudo chown mysql:mysql /tmp
ダメでした。
#やったこと
###示されてるファイル ****.local.pid の確認
/usr/local/var/mysql/****.local.pid
と言われているので、そのファイルを見に行く。(****は端末名)
$ ls /usr/local/var/mysql/
****.local.err
はあるけど ****.local.pid
はない。
この.errファイルを確認する。
###****.local.err に記載のエラーログ確認
$ cat /usr/local/var/mysql/****.local.err
そうするとエラーの途中でサーバー起動できない理由みたいなのを言ってる。
0 [ERROR] [MY-010270] [Server] Can't start server : Bind on unix socket: Address already in use
0 [ERROR] [MY-010258] [Server] Do you already have another mysqld server running on socket: /tmp/mysql.sock ?
なんか他のプロセスが動いてるかもしれないって言われる。
###プロセスの確認
$ ps aux | grep mysql
で確認してみるも、grep mysql
つまりこのコマンド自体しかいないので、実際は他のプロセスが動いてなさそう。
###/tmp/mysql.sock の移動
あちこちで言われている /tmp/mysql.sock
がなんか悪さしてるようなので、取り除く。
いきなり削除してもいいんだけど、念のため
$ sudo mv /tmp/mysql.sock* ~
で別のところに退避。
tmp配下にmysql.sockがつくファイルがなくなったので、この状態で再度アクセスしてみる。
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
いぇーい!
#結論
/tmp/mysql.sock
をここから削除、または移動させる。
プログラムとmysqlの通信(unixソケット)を処理してくれるやつに、使っていないはずの接続設定が残ってしまっているので、取り除くことで新規に接続できるようになりました。