MySQLが起動しない(Can't connect to local MySQL server ~~)

公開:2021/01/10
更新:2021/01/11
2 min読了の目安(約2100字TECH技術記事

環境

  • MySQL 8.0.22

結論

  1. mysql.sockファイルを作成する(この段階で動くことが大半)
sudo touch /tmp/mysql.sock
  1. PIDファイルがない場合は以下のコマンドで.pidファイルを作成する
sudo touch /usr/local/var/mysql/*****.local.pid
  • *****のところは自分のパソコンのホスト名が入る
  • ホスト名はuname -nコマンドで確認することが出来る
  1. MySQLサーバーを再起動する
sudo mysql.server restart

エラーと解決方法

mysql.sockがない

MySQLに接続しようとしたら以下のようなエラーメッセージが…。

mysql -u root -p

Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

MySQLはmysql.sockというファイルを通してローカルのMySQLサーバーに接続しているらしいのですが、そのmysql.sockファイルがないと言われています。
そして厄介なことに、このファイルがなんらかの原因で消えることがあるらしいです(原因不明。いつ起きるのかも不明)。なので、この現象が起きる度に以下の方法を通してmysql.sockファイルを作成しなければなりません…メンドクサイ。

mysql.sockファイルを作成する

先程も述べた通り、MySQLはmysql.sockというファイルを通してローカルのMySQLサーバーに接続しているらしいのですが、そのmysql.sockファイルがないと言われているので、以下のコマンドを通してmysql.sockファイルを作成します。

sudo touch /tmp/mysql.sock

MySQLを再起動して確認する

mysql.sockファイルを作成したら、MySQLを起動し直します。

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/*****.local.pid).

再起動したらまた別のエラーが発生しました。PIDファイルというものに関するエラーのようです。
調べてみるとPIDファイルというものが存在しないようだったので、コチラの記事を参考に以下のコマンドを実行してPIDファイルの作成を試みました。

touch /usr/local/var/mysql/*****.local.pid

# うまく行かなければ以下のコマンド
sudo touch /usr/local/var/mysql/*****.local.pid
  • *****のところは自分のパソコンのホスト名が入ります。
  • ホスト名はuname -nコマンドで確認することが出来ます。

MySQLサーバーを再度起動する

sudo mysql.server restart

Shutting down MySQL
... SUCCESS!
Starting MySQL
.. SUCCESS!

起動した!

おわりに

MySQLには定期的に悩まされているので困りものですね。

おまけ(個人的メモ)
MySQLの起動:mysql.server start
MySQLへの接続:mysql -u root -p

参考