今回は、MySQL5.7でrootユーザのパスワードを忘れてしまったときに再設定を行う手順がこれまでのバージョンといくつか異なる部分があったので備忘録として投稿します。
環境
- MySQL : 5.7.11
- CentOS : 7.1
1. MySQLにパスワード入力なしでログインできるよう設定
はじめに、パスワード入力なしでMySQLにログインできるようにします。
- パスワード入力なしでログインできるように /etc/my.cnf に skip-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.cnf の skip-grant-tables を削除します
my.cnf
[mysqld]
.
.
skip-grant-tables # 削除
.
.
- my.cnfファイルの修正内容を反映させるためMySQLを再起動します
$ sudo systemctl restart mysqld.service
- 以下のコマンドを入力し、リセットしたパスワードを入力してログインできれば完了です
$ mysql -u root -p
Enter password:
参考文献
- 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.
- MySQL 5.7.6以降でのパスワードリセット _ Sunny land of rain, https://blog.otofune.com/596.html, Online; accessed 12-March-2016.