Ruby
Rails
MySQL

localhostでMySQLが起動しない(Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2))

どうやら調べてみると、この事例が結構多いようなので、自分の事例を共有。

ある日突然、アプリケーションをlocalhostで開くとエラーが出ました。

Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

心当たりがなさすぎて、ぐぐったところ、どうやらmysql.sockというMySQLへ接続するためのファイルが消えてしまっているようで、もう一度然るべき場所に作ってやらないといけないっぽい。

まずは下のコマンドを打ち込んでから...

$sudo touch /tmp/mysql.sock

MySQLを再起動。

$sudo mysql.server restart

これで行けたかと思いアプリケーションを起動すると...

Can't connect to local MySQL server through socket '/tmp/mysql.sock'(38)

相変わらずエラーが出ていて、末尾の(2)が(38)に変わっただけ。
なぜじゃ...

作ったsockファイルのディレクトリがおかしい可能性があるので、下記のコマンドでちゃんとtmp下にファイルをしまってあげる。

$sudo chown mysql:mysql /tmp

またまた、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/XXXX-on-MacBook.local.pid).

これもグーグル先生に聞いてみた。
どうやらファイルのあるディレクトリに対する権限が無いのがいけないらしい。

なので、権限を付与する。

sudo chown -R _mysql:_mysql /usr/local/var/mysql

泣きの3回目、MySQLを再起動すると...

$sudo mysql.server restart
Starting MySQL
.. SUCCESS! 

キタ!
これでローカル環境でアプリをイジイジすることができます。

結論:原因は環境によって色々なパターンが有るため、エラーログをちゃんと読んで理解するの大事

参考

 mysqlが起動できない(Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2))
https://qiita.com/carotene512/items/e00076fe3990b9178cc0)

 mysql起動で「The server quit without updating PID file」
https://qiita.com/mogetarou/items/e34ca51d3756d55d7800)