【大阪 / 横浜】インフラ / サーバーサイドエンジニア募集中!

【大阪 / 横浜】インフラ / サーバーサイドエンジニア募集中!

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【WordPress 専用】クラウドサーバー『ウェブスピード』

【WordPress 専用】クラウドサーバー『ウェブスピード』

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【低コスト】Wasabi オブジェクトストレージ 構築・運用サービス

【低コスト】Wasabi オブジェクトストレージ 構築・運用サービス

【予約システム開発】EDISONE カスタマイズ開発サービス

【予約システム開発】EDISONE カスタマイズ開発サービス

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【中国現地企業に対応】中国クラウド / サーバー構築・運用保守

【中国現地企業に対応】中国クラウド / サーバー構築・運用保守

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

これで解決!忘れてしまった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ってほんとにわからない。。。
苦手意識を持たずに、今後もチャレンジを繰り返していきたいです!

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

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
10
読み込み中...
10 票, 平均: 1.00 / 110
59,441
X facebook はてなブックマーク pocket
【2024.6.30 CentOS サポート終了】CentOS サーバー移行ソリューション

【2024.6.30 CentOS サポート終了】CentOS サーバー移行ソリューション

【大阪 / 横浜】インフラエンジニア・サーバーサイドエンジニア 積極採用中!

【大阪 / 横浜】インフラエンジニア・サーバーサイドエンジニア 積極採用中!

この記事をかいた人

About the author

井上明香

システムソリューション部に所属。
ビヨンドに四国オフィス設立メンバーとして入社。IT業界に未経験で飛び込みました。
教育チームとして、新卒、中途、既存メンバーのカリキュラムの作成や研修の実施を行っています。
主な業務は、サーバーの運用保守。
とにかく、お客様のコンテンツを大切に思っています。
Webコンテンツ事業部、YouTubeチームにも所属。