🥲

【MySQL】mysqld_safe --skip-grant-tablesがうまくいかない

2023/12/14に公開

対象エラー

  • MySQLの初期パスワードがわからずググると「セーフモード起動しよう」と出てくると思います
mysqld_safe --skip-grant-tables
  • しかし、これが下記のように上手くいかない人へ捧げます。
➜  hoge git:(dev) mysqld_safe --skip-grant-tables

2023-12-13T22:52:23.6NZ mysqld_safe Logging to '/opt/homebrew/var/mysql/ainoMacBook-Pro.local.err'.
2023-12-13T22:52:23.6NZ mysqld_safe Starting mysqld daemon with databases from /opt/homebrew/var/mysql
2023-12-13T22:52:25.6NZ mysqld_safe mysqld from pid file /opt/homebrew/var/mysql/ainoMacBook-Pro.local.pid ended

原因

  • 他のプロセスがMySQLのポートを使用している。

解決方法

再起動編

MySQLプロセスの確認

ps aux | grep mysql

プロセスの停止

sudo pkill mysql

セーフモードでのMySQL起動の再試行:

mysqld_safe --skip-grant-tables

新しいターミナルウィンドウでのログイン試行

mysql -u root
  • これでログインできると思います。

パスワード設定編

MySQLの権限テーブルのリフレッシュ

FLUSH PRIVILEGES;
FLUSH PRIVILEGES について補足
  • FLUSH PRIVILEGESは
    MySQLの権限テーブルをリロードし、変更(例えば、新しいユーザーの追加、パスワードの変更、権限の変更など)を有効にするコマンド
    です
  • セーフモードで起動していて、権限テーブルを直接変更した(例えば、UPDATE や INSERT を使って mysql.user テーブルを直接編集した場合)ら、その変更を適用するために使用します

新しいパスワードを設定

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

参考資料

https://dev.mysql.com/doc/refman/8.0/ja/privilege-changes.html

Discussion