LoginSignup
1
2

More than 1 year has passed since last update.

【MySQL】Can't connect to local MySQL server through socket '/tmp/mysql.sock'や ERROR! PID file...などを解決!!

Posted at

概要

  • ほぼ1日mysqlで頭を抱えて溶けそうになったので、解決方法を残しておきます。

前提・環境

  • Mac

    • 機種ID:MacBookPro18,3
    • macOS:Monterey
    • チップ: Apple M1 Pro
    • メモリ: 16GB
  • brewでmysqlをインストールしています

  • 元々、brewでmysql@5.7とmysqlを入れていましたが、mysql@5.7をuninstallしたところから本記事になりますので、最新バージョンは以下バージョンのもので試行錯誤していました

    • mysql Ver 8.0.31 for macos12.6 on arm64 (Homebrew)
    • 5.7でPATH通す云々で一悶着ありましたが、bash_profileは本記事と関係ないのでカットしています
  • 多くの記事で記載のあった以下項目は既に実施済みですが、何も変わりませんでした

    • 再起動しよう
    • 不要なプロセスをkillコマンドで消しましょう
    • brewでmysqlをアンインストール・インストールする(再インストール)

参考記事・助けてもらった先人の知恵

エラー対応手順

  • なぜか、mysqlコマンドを打つと弾かれるようになってしまった。

  • $ mysql

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
  • MySQLでは、サーバーとクライアントを接続するときに、ソケットを使っているらしいが、どうやらこのsocketファイルがうまく使えていないらしい。なぜ消えてしまったいるのかは不明。
    • socketファイルを作れば良いという記事が多かったので、touch /tmp/mysql.sockを実行してからmysql -u root実行すると、
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (38)
  • 2が38になりやがった...なんなんだ!

    • socketファイルがいるディレクトリ/tmpに権限を与えるという、先人の知恵を借りて以下コマンドも実施
    • chmod 777 /tmp/mysql.sockで所有権を与え、
    • mysql.server restartでリスタートしてみる
  • さあ、来い!! しかしーー

 ERROR! MySQL server PID file could not be found!
  • なんやねん!そんな怒らんでも。

  • 先ほどのエラーメッセージは、「プロセスのIDが記録されているPIDファイルがない」というエラー。つまり、PIDを作ればいける!という記事を見つけたので、以下を実施。

    • cd /opt/homebrew/var/mysqlにいって、(一応mysqlディレクトリが生きているか確認するために移動)
    • sudo touch ********.local.pidを実施!
  • pid ファイルとは、サービス起動時に作成されるらしいので、mysql.server startを再度実施すればいけるか...!!

ERROR! The server quit without updating PID file (/opt/homebrew/var/mysql/********.local.pid).
  • やっぱりダメです...とほほ(^^;)

    • ********はマシン名が入っています
  • さて。/opt/homebrew/var/mysql以下のファイルの所有者をすべて_mysqlにすることで解決したという記事を見つけた。

    • sudo chown -R _mysql:_mysql /opt/homebrew/var/mysqlからのmysql.server restartでどうや!
ERROR! MySQL server PID file could not be found!
  • まじか、手強すぎw

  • ふむぅ。sudo chmod 777 /opt/homebrew/var/mysqlを行ってから、mysql.server startを実施してみるが、

 ERROR! The server quit without updating PID file (/opt/homebrew/var/mysql/********.local.pid).
  • やっぱり君だよね(

  • 再びしばらくぐぐっていると、brew uninstall mysqlでは消えないものがあるらしい。local配下のmysqlを全て削除してからもう一度再インストールしてみることに。

    • コマンドは上記記事を参考にしました
$ sudo rm -rf /usr/local/mysql
$ sudo rm -rf /Library/StartupItems/MYSQL
$ sudo rm -rf /Library/PreferencePanes/MySQL.prefPane
$ sudo rm -rf /Library/Receipts/mysql-.pkg
$ sudo rm -rf /usr/local/Cellar/mysql*
$ sudo rm -rf /usr/local/bin/mysql*
$ sudo rm -rf /usr/local/var/mysql*
$ sudo rm -rf /usr/local/etc/my.cnf
$ sudo rm -rf /usr/local/share/mysql*
$ sudo rm -rf /usr/local/opt/mysql*
  • そして再インストールを実施
brew uninstall mysql
brew install mysql
  • すると、インストールメッセージの中に気になるERRORメッセージを発見!!
2022-12-28T06:52:37.954850Z 0 [System] [MY-013169] [Server] /opt/homebrew/Cellar/mysql/8.0.31/bin/mysqld (mysqld 8.0.31) initializing of server in progress as process 42594
2022-12-28T06:52:37.956662Z 0 [ERROR] [MY-010457] [Server] --initialize specified but the data directory has files in it. Aborting.
2022-12-28T06:52:37.956679Z 0 [ERROR] [MY-013236] [Server] The designated data directory /opt/homebrew/var/mysql/ is unusable. You can remove all files that the server added to it.
2022-12-28T06:52:37.956714Z 0 [ERROR] [MY-010119] [Server] Aborting
2022-12-28T06:52:37.957673Z 0 [System] [MY-010910] [Server] /opt/homebrew/Cellar/mysql/8.0.31/bin/mysqld: Shutdown complete (mysqld 8.0.31)  Homebrew.
  • ↓ここです!
/opt/homebrew/var/mysql/ is unusable. You can remove all files that the server added to it.
  • ここに注目して、/opt/homebrew/var/にあるmysqlディレクトリを丸ごと削除。
  • mysql -u rootを実行してもこの状態。
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
  • mysqlディレクトリ消したから、これはもう一度再インストやな? 早速実施!!
brew uninstall mysql
brew install mysql
  • すると、先ほどの[ERROR]が消えました!おおっー!?

  • mysql -u root を実行すると、、

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.31 Homebrew

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

キタァーー!!!!!!!!

  • mysql.server startと打つと、、、
Starting MySQL
 SUCCESS!

キタァーー!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

久しぶりに見た、この 

「「「SUCCESS!」」」

一緒に叫んでやろうかと思いました。

以上、mysqlとの長い戦いでした!!!

補足

①brew services start mysqlとmysql.server startについて

②MySQL 8.0とMySQL 5.7について

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2