これで解決!忘れてしまったMySQLのrootユーザーパスワードを変更する
こんにちは!
株式会社ビヨンド四国オフィスのペルシャ猫、いのうえです。
ある日、何気なく自分のローカル環境のMySQLに入ろうと思ったら、入れない。なんてことが起こったんです。パスワードを入力してもエラーが返ってくる。
『なんとかパスワードを忘れた状態で新しいパスワードに変更できないか?』
と試行錯誤した結果に生まれたブログです!
この時、私が行った手順は以下のとおりです。
①初期パスワードを確認する
②パスワードが変更していることが分かる
③MySQLに入り、新しいパスワードを設定する
最後までご覧ください!
初期パスワードはどこ??
初期パスワードを確認するためには、/var/log以下の「mysqld.log」を確認する必要があります。
「mysqld.log」にテンポラリのパスワードが出力されるようになったのは、バージョン5.7からです。
※現在はバージョン8.0.33まで公開されています。詳しくはコチラ
MySQLのClientバージョンで確認するには以下のコマンドを入力します。
[root@test-aws-harukainoue ~]# mysql --version mysql Ver 14.14 Distrib 5.7.25, for Linux (x86_64) using EditLine wrapper
私のローカル環境ではMySQLのバージョンが5.7以上であることが分かりました!
[root@test-aws-harukainoue log]# pwd /var/log [root@test-aws-harukainoue log]# less mysqld.log | grep "temporary password" 2019-04-08T02:32:37.248018Z 1 [Note] A temporary password is generated for root@localhost: x=B-:.9iaqc?
lessで見ると、初期パスワードを探すのが大変なので、
「grep」で【temporary password】を含む文字列を抽出します。
実行結果からMySQLの初期パスワードは「x=B-:.9iaqc?」の文字列であることが分かります。
では、MySQLに入ってみましょう!
MySQLに入る時のコマンドは以下です。
mysql -u root -p
実行すると、パスワードの入力を求められるので「x=B-:.9iaqc?」を入力しました。
Enter password: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
あれ???こんなはずじゃない。。。
何度やってもエラーが表示され、MySQLに入れません。
これでは、MySQLのパスワードを新しいものに変更することが出来ません。。。
もしかすると、以前にMySQLのパスワードを変えたものの、思い出せないのかもしれないと思い、
別の方法でチャレンジ!
これで解決!Newパスワードを設定
viで「my.cnf」を開き編集します。
[root@test-aws-harukainoue etc]# vi /etc/my.cnf
[mysqld]の下に「skip-grant-tables」を入力し、上書き保存をしてください。
viの詳しい編集、保存方法は前回ブログの【Linux初心者向け】できた!viコマンドで編集と保存を参考にしてください。
MySQLを再起動します。
[root@test-aws-harukainoue etc]# systemctl restart mysqld
MySQLに入ります。
[root@test-aws-harukainoue etc]# mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.7.25 MySQL Community Server (GPL) Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
これでMySQLに入ることが出来たので、以下を実行し、権限の反映と新しいパスワードを設定します。
mysql> flush privileges; Query OK, 0 rows affected (0.01 sec) mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Newpassword'; Query OK, 0 rows affected (0.00 sec)
新しいパスワードに変更することが出来たので、MySQLから出ます。
mysql> quit
もう一度viで「my.cnf」を開き編集します。
今度は、先ほど追加した「skip-grant-tables」を削除し、上書き保存をします。
また、MySQLを再起動します。
[root@test-aws-harukainoue etc]# systemctl restart mysqld
新しく設定したパスワードでMySQLに入ってみましょう!
[root@test-aws-harukainoue etc]# mysql -u root -p Enter password:Newpassword Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.7.25 MySQL Community Server (GPL) Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
成功です!MySQLに新しいパスワードで入ることが出来ました!
ちなみにMySQLに入ってから、MySQLのバージョンを確認する方法はこちらです。
mysql> select version(); +-----------+ | version() | +-----------+ | 5.7.25 | +-----------+ 1 row in set (0.00 sec)
またまた、ちなみにMySQLのServerバージョンで確認する方法はこちらです。
MySQLのServerバージョンで確認する場合は、MySQLに入る時のパスワードが必要です。
[root@test-aws-harukainoue ~]# mysqladmin -u root -p version Enter password:Newpassword mysqladmin Ver 8.42 Distrib 5.7.25, for Linux on x86_64 Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Server version 5.7.25 Protocol version 10 Connection Localhost via UNIX socket UNIX socket /var/lib/mysql/mysql.sock Uptime: 21 min 2 sec Threads: 1 Questions: 2 Slow queries: 0 Opens: 105 Flush tables: 1 Open tables: 98 Queries per second avg: 0.001
さいごに
初期パスワードでMySQLに入れなかったのは、
私が以前パスワードを変えていて、そのことを忘れていたからだと思います。
自分のローカル環境で検証している時など、MySQLのパスワードを忘れてしまった!なんて時は試してみてください。
MySQLってほんとにわからない。。。
苦手意識を持たずに、今後もチャレンジを繰り返していきたいです!
日々成長、日々前進。
毎日、私自身をアップデートしていかなければ!!!
最後まで読んでくださって、ありがとうございます。