Macでmysqlが起動しなくなった時の解決方法とパスワード変更方法
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