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

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

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

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

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

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

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

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

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

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

ある日、何気なく自分のローカル環境のMySQLに入ろうと思ったら、入れない。なんてことが起こったんです。パスワードを入力してもエラーが返ってくる。

『なんとかパスワードを忘れた状態で新しいパスワードに変更できないか?』
と試行錯誤した結果に生まれたブログです!

この時、私が行った手順は以下のとおりです。

①初期パスワードを確認する
②パスワードが変更していることが分かる
③MySQLに入り、新しいパスワードを設定する

最後までご覧ください!

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

初期パスワードを確認するためには、/var/log以下の「mysqld.log」を確認する必要があります。
「mysqld.log」にテンポラリのパスワードが出力されるようになったのは、バージョン5.7からです。
※現在はバージョン8.0.33まで公開されています。詳しくはコチラ

MySQLのClientバージョンで確認するには以下のコマンドを入力します。

1
2
[root@test-aws-harukainoue ~]# mysql --version
mysql  Ver 14.14 Distrib 5.7.25, for Linux (x86_64) using  EditLine wrapper

私のローカル環境ではMySQLのバージョンが5.7以上であることが分かりました!

1
2
3
4
[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に入る時のコマンドは以下です。

1
mysql -u root -p

実行すると、パスワードの入力を求められるので「x=B-:.9iaqc?」を入力しました。

1
2
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

あれ???こんなはずじゃない。。。
何度やってもエラーが表示され、MySQLに入れません。
これでは、MySQLのパスワードを新しいものに変更することが出来ません。。。
もしかすると、以前にMySQLのパスワードを変えたものの、思い出せないのかもしれないと思い、
別の方法でチャレンジ!

これで解決!Newパスワードを設定

viで「my.cnf」を開き編集します。

1
[root@test-aws-harukainoue etc]# vi /etc/my.cnf

[mysqld]の下に「skip-grant-tables」を入力し、上書き保存をしてください。
viの詳しい編集、保存方法は前回ブログの【Linux初心者向け】できた!viコマンドで編集と保存を参考にしてください。
MySQLを再起動します。

1
[root@test-aws-harukainoue etc]# systemctl restart mysqld

MySQLに入ります。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[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に入ることが出来たので、以下を実行し、権限の反映と新しいパスワードを設定します。

1
2
3
4
5
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から出ます。

1
mysql> quit

もう一度viで「my.cnf」を開き編集します。
今度は、先ほど追加した「skip-grant-tables」を削除し、上書き保存をします。
また、MySQLを再起動します。

1
[root@test-aws-harukainoue etc]# systemctl restart mysqld

新しく設定したパスワードでMySQLに入ってみましょう!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[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のバージョンを確認する方法はこちらです。

1
2
3
4
5
6
7
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.7.25    |
+-----------+
1 row in set (0.00 sec)

またまた、ちなみにMySQLのServerバージョンで確認する方法はこちらです。
MySQLのServerバージョンで確認する場合は、MySQLに入る時のパスワードが必要です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[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ってほんとにわからない。。。
苦手意識を持たずに、今後もチャレンジを繰り返していきたいです!

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

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

【2026.6.30 Amazon Linux 2 サポート終了】Amazon Linux サーバー移行ソリューション

この記事をかいた人

About the author

井上明香

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