これで解決!忘れてしまったMySQLのrootユーザーパスワードを変更する


こんにちは!
株式会社ビヨンド四国オフィスのペルシャ猫、いのうえです。

私が躓いたMySQLに入ろうと思ったら入れない。。。
失敗談から成功体験談をご紹介します。

初期パスワードはどこ??

初期パスワードを確認するためには、/var/log以下の「mysqld.log」を確認する必要があります。
「mysqld.log」にテンポラリのパスワードが出力されるようになったのは、バージョン5.7からです。
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ってほんとにわからない。。。
苦手意識を持たずに、今後もチャレンジを繰り返していきたいです!

日々成長、日々前進。
毎日、私自身をアップデートしていかなければ!!!
最後まで読んでくださって、ありがとうございます。


この記事をかいた人

About the author

井上明香

ビヨンドに四国オフィス設立メンバーとして入社。IT業界に未経験で飛び込みました。ビヨンドの「賢いキャラ」確立のために日々奮闘中(笑)
地元が大好き。地元愛が止まらない。
小難しい技術ブログが書けるよう日々勉強。日々アップデート。