MySQLへのログインでエラーになった時の対処法
- MySQLにログインできない
- PIDファイルって何?
- ERROR 2002 (HY000)にどう対処したらいいの?
MySQLにログインしようとしたらエラーになることがあります。再インストールしたら解決できますが、もちろんデータが消えてしまいます。データを消したくないという方はこの記事を参考にしてもらったらと思います。
この記事を読むことでMySQLにログインするときの対処法が分かります。
MySQLへのログインでエラーになった時の対処法
Terminalから下記のコマンドでMySQLにログインします。
mysql -u root -p
パスワード入れると下記のエラーが出ました。
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (61)
調べてみるとMySQLを立ち上げてないことが原因だと分かりました。
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/mbp.local.pid).
mbp.local.pid なしにはサーバーを立ち上げられないとメッセージが出ているのでPIDファイルを作ります。
cd /usr/local/var/mysql
touch mbp.local.pid
Linux(Terminal)でのプロセスを保存するテキストファイルです。そのため、このファイルがないとLinuxのサービスがうまく動かなくなります。
ls -l mbp.local.pid でファイルが作られたか確認できます。
これでいけるかと思いきやMySQLを立ち上げようとするとエラーが出ます。
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (61)
/tmp/mysql.sock がないよ、と出たので作ってやります。
touch /tmp/mysql.sock
UNIXドメインソケットのことです。PC内でのプログラムとMySQLの通信(unixソケット)を処理してくれるファイルです。このファイルがないとプログラムをMySQLに伝えることができません。
再びMySQLを立ち上げようとしましたが次はパーミッションのエラー。
ERROR! MySQL server PID file could not be found!
Starting MySQL
.rm: /tmp/mysql.sock: Permission denied
.. ERROR! The server quit without updating PID file (/usr/local/var/mysql/mbp.local.pid).
なぜかPIDファイルもないよ、と言われたので再び作りました。(この原因はわかりません。)
話を戻してパーミションがどうなっているか確認します。
mbp:mysql user$ ls -l /tmp/mysql.sock
srwxrwxrwx 1 root wheel 0 6 27 12:04 /tmp/mysql.sock
以下のコマンドでパーミッションを変更します。
sudo chown user:admin /tmp/mysql.sock
パーミションについて基本を押さえておきたい、という方は下記の記事を参考にしてください。
これで再びMySQLを起動してみます。
mbp:mysql user$ mysql.server restart
ERROR! MySQL server PID file could not be found!
Starting MySQL
.. SUCCESS!
うまくいきました。PIDファイルがない、と出ていますがSUCCESSと出ているので問題ないでしょう。
これでMySQLにログインします。
mbp:mysql user$ mysql -u root -p
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.19 Homebrew
うまくいきました。
まとめ
PIDファイルや/tmp/mysql.sock がなくなっているのが問題でした。
何かの拍子にこの2つがなくなるようです。どちらもプログラムを動かす時には必須のファイルになります。
多くのサイトではMySQLを再インストールすることで解決していましたが、データが消えてしまうので今回のやり方を試してもらったらと思います。