MySQLのバージョンをMacで変更した際、 ERROR! The server quit without updating PID file エラーで起動出来なくなった問題


お馴染みのよくQiitaで見かけるMySQLが起動出来ないエラーに関する記事です。
新マックにて、homebrewでMySQLのバージョンを8から5.7に変更した際に起こりました。

$ brew install [email protected]

この後MySQLを起動するため、

$ mysql.server start

と打つと、
. ERROR! The server quit without updating PID file (/usr/local/var/mysql/user/pid)
のエラーが起きました。

ググってヒットしたのは、パーミッション系です。

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

のコマンドで解決したケースが多いみたいだったので、打ってみますが、エラーは解消せず。

次によくあったのが、mysqlのプロセスをkillしてみたり、入れ直したりなどで、それらも試みましたが、ダメでした。

いくつかググって見ていると、こちらでログを見るように書かれていたので、まずはログを確認しました。
これも、どれがログファイルかすぐには分からず、sudo tail -fを打ってリアルタイムに書き換わっている場所を、/usr/local/var/mysql/下で探しました。

/usr/local/var/mysql/マック名.err
というファイルにログが更新されていたので、そちらを見てみました。

sudo tail -f /usr/local/var/mysql/マック名.err

おびただしいエラーログがあったので、エラーの発生時点まで遡ってみると、

NoteからERRORに切り替わっている場所が!

[ERROR] Can't start server: Bind on TCP/IP port: Address already in use
2019-01-16T14:03:24.236514Z 0 [ERROR] Do you already have another mysqld server running on port: 3306 ?

どうやら既に起動中との事です、それを見てハッとしました。自分はDockerでMySQLを立ち上げていたので、それとローカルのMySQLがもしやポートで競合しているのではと思い、my.cnfからポートを変更するようにしました。

$ mysql --help | grep my.cnf
を打って、出てきた候補から、ファイルが書き込まれている部分を調べました。

自分の場合は/usr/local/etc/my.cnfにあったので、そちらにて、port=3307という指定を追加しました。

# Default Homebrew MySQL server config
[mysqld]
# Only allow connections from localhost
bind-address = 127.0.0.1
# この行を追加
port=3307

再度
$sudo mysql.server startすると、
$..Success!

と表示。ようやく解決しました。

同じ環境でDockerなどを立てて複数動かしてる場合は、ポートを変える必要があるという事です。

追伸

Mac自体を再起動すると、バージョンが8に戻っていてまたコケた。

とりあえずこちらの方法で、MySQLを入れ直して対処。