The server quit without updating PID file
エラー
mysql server start
をすると以下のようなエラーが発生
これはmysqlのバージョンを変えたりする時に発生するエラー。つまり別のバージョンのmysqlが動いているので、そちらの実行を止める必要があるということ。
ERROR! The server quit without updating PID file (/usr/local/var/mysql/user-no-MacBook-Air.local.pid).
現在実行中のプロセスを止める必要がある
ps aux | grep mysql #MySQL関連のプロセス確認
以下のように表示されるので、実行されているプロセスを止める。
user #これが(31827)PID→# 31827 0.3 0.2 4901664 12920 ?? S 日09PM 22:37.06 /usr/local/Cellar/mysql/8.0.19/bin/mysqld --basedir=/usr/local/Cellar/mysql/8.0.19 --datadir=/usr/local/var/mysql --plugin-dir=/usr/local/Cellar/mysql/8.0.19/lib/plugin --log-error=user --pid-file=/usr/local/var/mysql/user.pid
user 31691 0.0 0.0 4271692 672 ?? S 日09PM 0:00.03 /bin/sh /usr/local/Cellar/mysql/8.0.19/bin/mysqld_safe --datadir=/usr/local/var/mysql --pid-file=/usr/local/var/mysql/user.pid
user 3205 0.0 0.0 4277256 812 s001 S+ 2:49PM 0:00.00 grep mysql
プロセスの所有権がユーザ名ではない場合は以下を実行して強制的に止める
kill -9 <PID>
これで所有権をとめてから実行する
mysql.server start
こちらが大変参考になりました。
MySQLエラー解決法(Mac編)
こちらも参考
pidのエラー解決
ちなみにPIDはProsess ID の略
##追記
PIDのプロセスを削除した後
$mysql.server start
を実行しても、既にサーバーは起動しているよというメッセージがでてくる。
$2020-06-04T05:42:53.6NZ mysqld_safe A mysqld process already exists
もう一度pidのプロセスをps aux | grep mysql
で確認すると、
別のプロセスが勝手に起動している!!
なんで??
解決方法
macにはlaunchctlという仕組みがあり,plist定義を作っておくと,自動でデーモンを起動してくれる.これにmysqlが定義されていたらしい(汗)
以下のコマンドでlaunchctlの管理から除外できる.
$brew services stop mysql