ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
PCをシャットダウンして再度立ち上げ直した時によく下記エラーが発生する。
$ mysql -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
/tmp/mysql.sockがないと言われているので、ファイルを作ってみる。
$ sudo touch /tmp/mysql.sock
#=> パスワードを求められるので、PCのパスワードを入力する
ERROR! The server quit without updating PID file (/usr/local/var/mysql/*****.pid).
その後、mysqlを再起動しようとすると次のエラーが発生する。
PIDファイルを更新せずにサーバが終了しましたというエラー内容。
$ sudo mysql.server restart
ERROR! MySQL server process #8166 is not running!
Starting MySQL
. ERROR! The server quit without updating PID file (/usr/local/var/mysql/*****.pid).
指摘されている箇所を見にいくと、該当のファイルが存在しなかった。
調べてみると、どうやら
- (1)pidファイルが存在しない
- (2)pidファイルに適切な権限が設定されていない
ことが原因として挙げられるそうです。
現状確認
$ mysql --version
mysql Ver 8.0.22 for osx10.15 on x86_64 (Homebrew)
(1)PIDファイルを作成する
$ touch /usr/local/var/mysql/******.pid
# ファイル名である「*****.pid」の*****には、マシンのホスト名を入力する。
# マシンのホスト名は $ uname -n で確認可能
ファイルが作られたので、試しに再度下記コマンドを打つもエラーとなっている
$ sudo mysql.server restart
Password:
ERROR! MySQL server PID file could not be found!
Starting MySQL
. ERROR! The server quit without updating PID file (/usr/local/var/mysql/*****.pid).
(2)PIDファイルの権限を変更する
$ cd /usr/local/var/mysql/
$ ls
#=> さっき作ったファイルが消えている(?)
権限を変更する前に、一度mysqlフォルダにあるファイルの権限状態を確認しにいきました。
そうすると、さっき作ったはずのファイルがなくなっていました。
理由はわからないので、再度PIDファイルを作って確認。
$ touch /usr/local/var/mysql/******.pid
$ ls
#=>ファイルの存在を確認
# 再度mysql立ち上げを試みるもエラーが発生。
$ sudo mysql.server restart
Password:
ERROR! MySQL server PID file could not be found!
Starting MySQL
. ERROR! The server quit without updating PID file (/usr/local/var/mysql/*****.pid).
#=> この時点で再度ファイルを確認すると、またしてもなくなっている。(???)
PIDファイルを作成し、権限を変更した後、mysqlを立ち上げてみる
$ touch /usr/local/var/mysql/******.pid
$ sudo chown _mysql:_mysql /tmp
# 再起動するも、またPIDファイルがないと言われる(泣)
$ sudo 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/*****.pid).
どうしようもないので、mysqlを再インストールする
$ brew uninstall mysql
# この時点でmysql.server startとしてもエラーのまま
# 一度サーバーをシャットダウンしてみる
$ sudo shutdown -r now
# 再度サーバーを起動させる
$ mysql.server start
Starting MySQL
.. SUCCESS!
起動できました!!!
なんとか起動し直すことができました。ただなぜ上手くいかなかったのかまではあまり追及できなかったので備忘録としてキーワードだけ残しておくことにします。まだエラーで詰まった場合は下記キーワードとこの備忘録を元に早急なエラー対処ができることを切に願う。
- PIDファイルは存在するか
- PIDファイルの権限はどうなっているか
- どうしようもない場合はmysqlを再インストールすること
- mysqlを立ち上げてみる前に、一度サーバーをシャットダウンする