Edited at

MySQL 5.7でrootユーザのパスワードを再設定

More than 3 years have passed since last update.

今回は、MySQL5.7でrootユーザのパスワードを忘れてしまったときに再設定を行う手順がこれまでのバージョンといくつか異なる部分があったので備忘録として投稿します。


環境


  • MySQL : 5.7.11

  • CentOS : 7.1


1. MySQLにパスワード入力なしでログインできるよう設定

はじめに、パスワード入力なしでMySQLにログインできるようにします。


  • パスワード入力なしでログインできるように /etc/my.cnfskip-grant-tables を追加します


my.cnf

[mysqld]

.
.
skip-grant-tables
.
.


  • my.cnfファイルの修正内容を反映させるためMySQLを再起動します

    ※ CentOS 7系の環境なので systemctl コマンドを利用しています

$ sudo systemctl restart mysqld.service


  • 以下のコマンドでパスワード入力なしでMySQLにログインします

$ mysql -u root


2. rootユーザのパスワードを再設定

続いて、MySQLのrootユーザのパスワードを再設定するため、MySQLで以下のコマンドを入力していきます。


  • 使うデータベースを標準のmysqlのものに変更します

mysql> use mysql

Database changed


  • パスワードを再設定します

mysql> UPDATE user SET authentication_string=password('新規パスワード') WHERE user='root';

Query OK, 1 row affected, 1 warning (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 1


  • 再設定したパスワードをMySQLに反映させます

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)


  • MySQLからログアウトします

mysql> quit

Bye


3. MySQLにパスワード入力ありでログインするように戻す

最後に通常通り、パスワード入力をしてMySQLにログインするように手順1で設定した内容を戻します。



  • /etc/my.cnfskip-grant-tables を削除します


my.cnf

[mysqld]

.
.
skip-grant-tables # 削除
.
.


  • my.cnfファイルの修正内容を反映させるためMySQLを再起動します

$ sudo systemctl restart mysqld.service


  • 以下のコマンドを入力し、リセットしたパスワードを入力してログインできれば完了です

$ mysql -u root -p

Enter password:


参考文献


  1. MySQL5.0以降でルートパスワードをリセットする -でじうぃき, http://onlineconsultant.jp/pukiwiki/?MySQL5.0%E4%BB%A5%E9%99%8D%E3%81%A7%E3%83%AB%E3%83%BC%E3%83%88%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89%E3%82%92%E3%83%AA%E3%82%BB%E3%83%83%E3%83%88%E3%81%99%E3%82%8B, Online; accessed 12-March-2016.

  2. MySQL 5.7.6以降でのパスワードリセット _ Sunny land of rain, https://blog.otofune.com/596.html, Online; accessed 12-March-2016.