macのローカル環境のMySQLが突然起動しなくなり、かなり手こずったのでここにまとめておこうと思います。
発生したエラー達
まずは、発生した問題を一覧にまとめると、、
- エラー1 MySQLコマンドが「comand not found」になってしまった
- エラー2 「sudo mysql.server restart」とすると「PID file could not be found!」となってしまった
- エラー3 Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (38)」となってしまった
一つづつ私が解決した方法を説明していきます。
解決方法
エラー1 MySQLコマンドが「comand not found」に!
私の場合は以下のようなエラーがMySQLを起動しようとすると発生してしまった為、一度MySQLをアンインストールしてもう一度再インストールことにしました。
ERROR! The server quit without updating PID file (/usr/local/var/mysql/[マシン名].local.pid).
その為、再インストールしたのですが今度は次のようなエラーが発生!
$ mysql -versions -bash: mysql: command not found
エラーによるとシンボリックリンクがどうやら作成されていないようなのでシンボリックリンクを作成することにしました。実行結果が以下のコードです。
$ brew link mysql@5.7 Warning: mysql@5.7 is keg-only and must be linked with --force
今度は「–force」というオプションを後ろにつけないとシンボリックリンクを作らないよと怒られました。結構これに気付くのに時間がかかってしまいましたね…。なので今度は次のようなコマンドを打つと…
$ brew link mysql@5.7 --force Linking /usr/local/Cellar/mysql@5.7/5.7.26... 87 symlinks created If you need to have this software first in your PATH instead consider running: echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.bash_profile
もし、インストールするのが初めてだったらPATHを通してね!と言っているので、「export PATH=”/usr/local/opt/mysql@5.7/bin:$PATH”」をPATHに追加してあげましょう!今度はうまくいきました!やったー!これでやっとmsyglコマンドが使えるようになって一つ目のエラーが解決しましたね。
エラー2 「sudo mysql.server restart」とすると「PID file could not be found!」となってしまう問題
さあ、やっとmysqlコマンドが使えるようになったので今度はmysqlを起動してみましょう!以下のコマンドで実際にmysqlを起動してみました。
$ sudo mysql.server start ERROR! MySQL server PID file could not be found! Starting MySQL .Logging to '/usr/local/var/mysql/[マシン名].local.err'. ERROR! The server quit without updating PID file (/usr/local/var/mysql/[マシン名].local.pid).
なんとまたまたエラー!今度は「PID file could not be found!」つまりPIDファイルが存在しないぞ!と怒られました。なのでPIDファイルを作ってあげることにします。以下のコマンドで実際のディレクトリに移動してPIDファイルを作成してあげます。
$ cd /usr/local/var/mysql/ $ touch [マシン名].local.pid $ ls [マシン名].local.pid ←ちゃんと作成されているか確認!
これでPIDファイルは作成できたので「mysql」コマンドを実行してみましょう
$ mysql ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (38)
すると、また新しいエラーが…。次のエラー解決法に移動しましょう。
エラー3 Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (38)」となってしまった
さて、また新しいエラーが発生しました。’/tmp/mysql.sock’に繋げれないよ!と言っています。私の場合は以下のコマンドでもう一度socketを作成してあげることで解決しました。
$ sudo touch /tmp/mysql.sock
では、サイドmysqlサーバーを立ち上げましょう!
$ sudo mysql.server restart ERROR! MySQL server PID file could not be found! Starting MySQL .Logging to '/usr/local/var/mysql/[マシン名].local.err'. ERROR! The server quit without updating PID file (/usr/local/var/mysql/[マシン名].local.pid). inagakiyuunarinoMacBook-puro-6:~ yuya-inagaki$ mysql.server start Starting MySQL . SUCCESS!
それでもダメだった場合、、権限周りの問題かも?以下のコマンドを実行してみましょう。
sudo chown -R _mysql:_mysql /usr/local/var/mysql
最初、restartとしてしまったところPIDファイルがないと怒られてしまいました。今回の場合はstartで大丈夫なことを忘れていましたので、もう一度startで実行するとやっとうまくいきました!長かった〜〜