LoginSignup
3
1

More than 3 years have passed since last update.

MacでMysqlが起動できなかったときの顛末

Posted at

ことの発端

脱初心者しよう。スキルアップするには自分でサービスを立ち上げてみることが一番だろう。
そう思いRailsアプリを作ろうとMysqlをmacで動かそうとしたら見事にハマったのでメモ。
なおこの記事は回り道が多く有益ではないので「こんな風に対応したのか」だけ見て頂ければ。

環境

MacOS Catalina 10.15.7

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.15.7
BuildVersion:   19H114

この記事で出てくるエラーのまとめ

あくまで自分の環境の場合です。

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

  • mysqlが起動してなかった

. ERROR! The server quit without updating PID file

  • PIDファイルが無かった
  • PIDファイルの権限が違った
  • ホスト名が明示的に設定されてなかった

mysqld_safe A mysqld process already exists

  • Homebrewでmysql入れ直した際に作られたmysqlのplistの設定で止まらないようになってた

作業の経緯

mysqlの動作確認をしようとするとエラー。

$ mysql -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

psの結果を見てもプロセスは立ち上がっていない。

$ ps -ef | grep mysql
  501 70946  3833   0  8:39PM ttys000    0:00.00 grep mysql

sudo mysql.server start で起動させようとするとまた違うエラー。

$ sudo mysql.server start
Starting MySQL
. ERROR! The server quit without updating PID file (/usr/local/var/mysql/sugeta10.fletsphone.pid).

そもそもpidファイルが存在していない?
・・・というか、コンピュータ名の次にあるホスト名みたいなの、なに・・・?
調べてみたところ以下の記事を発見。

MacでPIDファイルによるエラーでmysqlを起動できない時の対処法 (ERROR! MySQL server PID file could not be found!)

「Macの場合ですが、ホスト名が明示的に設定されていない場合、ネットワークが変わるとホスト名も変わってしまう」
ということなので設定を確認。

$ sudo scutil --get ComputerName
sugeta10
$ sudo scutil --get LocalHostName
sugeta10
$ sudo scutil --get HostName
HostName: not set

設定できるようなので試してみます。

$ sudo scutil --set HostName sugeta10
$ sudo scutil --get HostName
sugeta10

そもそもこれらの設定はなんなのだろうと調べてみたところ、以下の記事を発見
参照:MacOS の ComputerName/LocalHostName/HostName 備忘録
ざっくりまとめるとこのような感じのようです。

  • ComputerName:システム環境設定 → 共有 → コンピュータ名から参照できる名前
  • LocalHostName:MacのBonjourで使用する名前 (ComputerNameと実質同じ)
  • HostName:ターミナルから問い合わせた場合の名前

さて、これで起動するかと思いきや叶わず。ファイルがないよと。

$ sudo mysql.server start
Starting MySQL
. ERROR! The server quit without updating PID file (/usr/local/var/mysql/sugeta10.pid).
$ ls /usr/local/var/mysql/sugeta10.pid
ls: /usr/local/var/mysql/sugeta10.pid: No such file or directory

ファイルを作ろうとしてパーミッションエラーになったので、sudo付けて再実行。権限も修正。

$ touch /usr/local/var/mysql/sugeta10.pid
touch: /usr/local/var/mysql/sugeta10.pid: Permission denied
$ sudo touch /usr/local/var/mysql/sugeta10.pid
$ sudo chown _mysql:_mysql /usr/local/var/mysql/sugeta10.pid

でもダメ・・・!

$ sudo mysql.server start
Starting MySQL
. ERROR! The server quit without updating PID file (/usr/local/var/mysql/sugeta10.pid).

各所見て回って「mysql入れ直すしかねぇ」という話が多かったので以下を参考に。

The server quit without updating PID file mysqlエラー解決方法

$ rm -rf /usr/local/mysql
$ rm -rf /Library/StartupItems/MYSQL
$ rm -rf /Library/PreferencePanes/MySQL.prefPane
$ rm -rf /Library/Receipts/mysql-.pkg
$ rm -rf /usr/local/Cellar/mysql*
$ rm -rf /usr/local/bin/mysql*
$ rm -rf /usr/local/var/mysql*
$ rm -rf /usr/local/etc/my.cnf
$ rm -rf /usr/local/share/mysql*
$ rm -rf /usr/local/opt/mysql
$ brew install mysql@5.6
$ echo 'export PATH="/usr/local/opt/mysql@5.6/bin:$PATH"' >> ~/.bash_profile
$ source ~/.bash_profile
$ mysql.server start

いけたか?
起動してみたら、「SUCCESS!」と言いつつ変なメッセージが渡されている。。。

$ mysql.server start
Starting MySQL
 SUCCESS!
$ 210214 11:26:15 mysqld_safe A mysqld process already exists

何度停止しても停止できない・・・

$ mysql.server stop
Shutting down MySQL
.. SUCCESS!
$ mysql.server stop
Shutting down MySQL
.. SUCCESS!

startしたときに何故か渡されている文字で調べてみると以下記事を発見。

藁にもすがる思いで上記参考に以下を実施。

$ vi ~/Library/LaunchAgents/homebrew.mxcl.mysql@5.6.plist

変更前

<dict>
    <key>KeepAlive</key>
    <true/>

変更後

<dict>
    <key>KeepAlive</key>
    <false/>

設定変更を反映

$ launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql@5.6.plist
$ launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql@5.6.plist

起動できた・・・!😂

$ mysql -u root
3
1
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
3
1