mysqlがある時から急に使えなくなり、復旧するのに2週間近くかかったので、その突起の解決方法を
記述する。
最初のエラー → sockファイルが必要だった。
$ mysql -uroot -proot
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
下記記事の通りmysql.sockファイルがないというエラーらしい。
私は記事のコマンドをそのまま実行した。
https://qiita.com/carotene4035/items/e00076fe3990b9178cc0
具体的にはtouch
コマンドでmysql.sockファイルを作成し、権限も与えたが上手くいかなかった。
(後で見返したらmysqlとは関係ないディレクトリ上にmysql.sockファイルを作っていた。)
その後、記事の通り、$ sudo mysql.server restart
を実行すると異なるエラーが出てきた。
次のエラー → 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/MacBook-Pro.local.pid).
どうやら
1.そもそもpidファイルが存在していない。
2.pidファイルに適切な権限が設定されていない
ことが原因らしい
次は下記記事を参考にtouch
コマンドでpidファイルを作成した。
https://qiita.com/jonakp/items/477a18d4a94c01a31583
$ touch /usr/local/var/mysql/ローカル名.pid
補足:ローカル名の調べかた↓
$ uname -nローカル名
これまたよく見ると、作成場所を間違えていた。
そのため、実行結果は同じであった。
$ 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/MacBook-Pro.local.pid).
mysqlの関係ファイルの全削除
その当時もういっそのこと削除しても支障がないDBしかなかったので、一度mysqlの関係ファイルを削除して再インストールするのが一番早いのではないかと思った。
そう思って下記記事を参考にした。
https://qiita.com/ryo_saito_k/items/7d8f5370899df125d459
今度はしっかりとmysqlのディレクトリに移動した。
cd /usr/local/var/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 ls
を実行してもインストールしたbrewからmysqlが消えていた。
mysqlの再インストール & sockファイルの再作成
その後、mysqlの再インストールを実行した。
$ brew install mysql@5.7
そして、これで上手くいくはずだと思い、mysqlを実行した。だが、、、
$ mysql -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
ここで、ようやく私は別のディレクトリに関係のないファイルを作っていたのか!!!
ということに気がついた!!
今度こそ、mysqlのディレクトリに移動してtouch
コマンドでsockファイルを作成した。
$ cd /usr/local/var/mysql/
$ sudo touch ローカル名.pid
mysqlの復活!!
そのおかげで、無事に再びmysqlを利用できるようになった。
mysql.server start
Starting MySQL
. SUCCESS!
mysqlは初期設定のままなので下記コマンドで実行できた。
mysql -u root
皆さんにはディレクトリの違いい気をつけてエラーを解決してほしい!