STAY TOKYO連休にふとサイトを開いてみたらデータベースエラー発生。
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)
なにやら、mysqlに接続出来ていない模様。あれれ? 何かしたっけ? と考えながらターミナルを立ち上げSSH。うーーん、おかしい、なぜだ??? ググっていくつかのサイトで同じエラーがヒットし、mysql.sockがなんらかの原因により消えることがあるという。 sudo touch /tmp/mysql.sock で空ファイルを作ってやればよい と解決策が紹介されている。なるほど、確かに/tmp にソケットは見当たらないねぇ。そのまま鵜呑みに叩いてみると Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock'(38) 2だったのが38に変わった! あれれ??
mysql.server restart と叩くも … ERROR! The server quit without updating PID file (/usr/local/var/mysql/xxxxx.local.pid). と帰ってくる。再度ググってみると PID fileのパーミッションの問題で、.errファイルを _mysql:_mysql にして直った! と書いている人がいる。
sudo chown -R _mysql:_mysql /usr/local/var/mysql でも状況変わらず。ここで気がついた。そういえば昨日再起動したんだったわ! そもそもmysqlが動いてなかったのでは? と。mysqlが動いていないのだから繫がるわけないよな。ところが、mysql.server start を繰り返しても一向にmysqlを起動出来ない。困った。mysqlを再度入れ直している人もいる。えーーー? そんな直し方しか無いの??? そこで、パーミッションを元に戻し、tail -f エラーファイルで状況確認。2020-07-25T14:39:59.869841Z 0 [ERROR] [MY-000067] [Server] unknown variable ‘validate_password_policy=LOW’. あ! 思い出した! この間パスワードポリシー問題で my.cnf に書いたわ。何処にあったっけ? /usr/local/etc/my.cnf を編集して
$ mysql.server start
Starting MySQL
.. SUCCESS!
やった! なおった!
いや、直ったんじゃなくって、、、、、、結局のところ、パスワードポリシーを一時的に変更したことを忘れていたがために起動できず、起動していないデーターベースに要求を通してエラーが吐き出され、余計なsudoを打ったがためにパーミッションの問題が起きたのでした。ちゃんとエラーログを確認してググりましょう。おそまつ。