今回はMySQLのパスワードの再設定方法について行って行きます。
データベースを使っていると環境によっては使えるデータベースと使えないデータベースが有ると思います。
そうなるとデータベースのパスワードを忘れてしまいログインが出来なくなりテンパります。
そんな時のためにここにパスワードの再設定を残しておきます。
状況
MySQLのローカルサーバに接続する場合、
$ mysql -u [ユーザー名] -p
を使用してパスワードを入力しログインをしようとした所、
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
と出力されました。
グーグル翻訳で直訳すると、
エラー1045(28000):ユーザー ‘root’ @ ‘localhost’のアクセスが拒否されました(パスワードを使用:YES)
となりどうやらパスワードの使用でエラーが起こっているいるようです。
解決法
MySQL 5.xと8.xでは少し違う?ようです。
8.x用に解決法を記載していきます。
①完全にサーバーを止める
mysql.server stop
②セーフモードの起動
セーフモードとは
なんらかの不具合が生じた時の起動モードのことで、必要最低限の機能以外は無効になっているモードになります。
$ mysqld_safe --skip-grant-tables &
③下記のコマンドでrootにパスワード無しでログインします。
$ mysql -u root
※ログインに成功すると、行頭記号が「$」 →「mysql」となります。
④rootユーザーのパスワードを無し(null)に設定します
mysql> UPDATE mysql.user SET authentication_string=null WHERE User='root';
⑤一旦セーフモードからログアウトします。
mysql> exit
⑥通常モードで再起動を行います
$ mysql.server restart
⑦空パスワードのrootでログインを行います。
$ mysql -u root -p
⑧デフォルトのデータベースにアクセスします。
USE mysql;
※下記のメッセージが出力されます。
Database changed
⑨パスワードの再設定を行う。
mysql> ALTER USER 'root'@'localhost' identified BY '任意のパスワード';
⑩通常モードから一度ログアウトします。
mysql> exit
⑪通常モードに再度ログインしてみましょう。パスワードを求められるので入力して完了です。
$ mysql -u root -p
Enter password:〇〇〇〇○
⑫成功なら行頭記号が行頭記号が「$」 →「mysql」となります。
mysql>
まとめ
MySQL 8.xのパスワードの再設定を行うのに少し苦労したので私が解決した方法を備忘録として残しておきます。
今回も最後までお読みい頂きありがとうございます。
駆け出しエンジニア けいこ♂
コメント