🥲
【MySQL】mysqld_safe --skip-grant-tablesがうまくいかない
対象エラー
- 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';
参考資料
Discussion