🔥

Macでmysqlが起動しなくなった時の解決方法とパスワード変更方法

2023/02/09に公開

mysqlのパスワード変更したいがそもそもmysqlが起動しなくなったと質問があったので解決方法を記載します。

エラー解決方法

下記のようなエラーが出ていたようなのでまずはエラーを解決してmysqlを起動方法する方法を説明します。

エラー内容

mysql.server start
Starting MySQL
... ERROR! The server quit without updating PID file (/usr/local/var/mysql/[マシン名].pid).

上記のエラーはPID(プロセスID)がいくつかのプロセスで参照しているので起きている模様

ということはプロセスを殺してしまえば解決するということになります!

プロセスの止め方はkill -9 PID(プロセスID)で止めることができるので

プロセスIDを検索してみる。今回はmysqlのプロセスを確認したいので下記のコマンドで確認します。

ps aux | grep mysql

そうするといくつかのmysqlプロセスが起動していることがわかる

ユーザー名 51993   0.1  1.3 409381632 434064 s007  S    10:40PM   0:01.08 /opt/homebrew/Cellar/mysql/8.0.32/bin/mysqld --basedir=/opt/homebrew/Cellar/mysql/8.0.32 --datadir=/opt/homebrew/var/mysql --plugin-dir=/opt/homebrew/Cellar/mysql/8.0.32/lib/plugin --log-error=YL2P3W76G1.err --pid-file=/opt/homebrew/var/mysql/YL2P3W76G1.pid
ユーザー名 52692   0.0  0.0 408637584   1696 s007  S+   10:43PM   0:00.00 grep mysql
ユーザー名 51878   0.0  0.0 408639136   2672 s007  S    10:40PM   0:00.03 /bin/sh /opt/homebrew/Cellar/mysql/8.0.32/bin/mysqld_safe --datadir=/opt/homebrew/var/mysql --pid-file=/opt/homebrew/var/mysql/YL2P3W76G1.pid
ユーザー名 51879   0.0  0.0 408639137   2673 s007  S    10:40PM   0:00.04 /bin/sh /opt/homebrew/Cellar/mysql/8.0.32/bin/mysqld_safe --datadir=/opt/homebrew/var/mysql --pid-file=/opt/homebrew/var/mysql/YL2P3W76G1.pid

mysqlのプロセスがいくつか起動していると思うので、そのプロセスをkillします.
PIDはユーザー名の横にある数字になります。
今回はgrep以外のプロセスを停止させれば良いので今回の例だと下記3つのプロセスを停止させる
51993
51878
51879

kill -9 51993
kill -9 51878
kill -9 51879

あとはmysqlを起動させれば起動するはず

mysql.server start

パスワード変更方法

まずmysqlサーバーを停止させる

mysql.server stop

セーフモードで起動

mysqld_safe --skip-grant-tables &

セーフモードなのでパスワードなしでmysqlに接続できる

mysql -u root

rootユーザーのパスワードをなしにする

mysql > UPDATE mysql.user SET authentication_string=null WHERE User='root';
mysql > exit;

mysqlサーバー再起動

mysql.server restart

mysqlに接続できるようになる!!!!!!

mysql -u root

パスワード変更したいなら下記を実施(パスワードなしで良いならここで終わり)
パスワードをhogeにしたかったら

mysql > USE mysql;
mysql > ALTER USER 'root'@'localhost' identified BY 'hoge';

そもそもmysqlのプロセスが表示されない場合

下記でmysqlのプロセスが表示されない人は確認してみてください

ps aux | grep mysql

まずプロセスが表示されないということはmysqlを実行している権限とファイルの権限が間違っていることが考えられます。

macのtmpディレクトリーに移動し下記でファイルと権限を表示してみてください

ls -la

下記のようになっていればOKです。違ったら修正しましょう!

srwxrwxrwx   1 ログインしているユーザー名  wheel    0  2 10 20:12 mysql.sock
-rw-------   1 ログインしているユーザー名  wheel    6  2 10 20:12 mysql.sock.lock
srwxrwxrwx   1 ログインしているユーザー名  wheel    0  2 10 20:12 mysqlx.sock
-rw-------   1 ログインしているユーザー名  wheel    6  2 10 20:12 mysqlx.sock.lock

ログインしているユーザー名は下記で確認できます。

who am i

ログインしているユーザー名 ttys009  Feb 10 19:25

修正例ソケットの権限が違う場合

srw-r--r--1 root  wheel    0  2 10 20:12 mysql.sock

まず所有者を変更する

chown ログインしているユーザー名:wheel mysql.sock

権限レベル変更

chmod 777 mysql.sock

これでmysqlサーバー起動すればOK

mysql.server restart

Discussion