今回の流れ
本番環境でMariaDBを使いパスワードを忘れてしまった際に、再設定するために流れです。
1. Mysqlを停止します。
2. ディストリビューションに応じて、sudo vim /etc/my.cnfまたは/etc/mysql/my.cnf
3. [mysqld]のしたにskip-grant-tablesを追加
4. Mysqlを再起動します。
5. これで、以下のコマンドを使用してmysqlにログインできるはずです。 mysql -u root -p
6. 新しいパスワードを設定 ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword';
7. mysql> flush privileges;
8. /etc/my.cnfに戻って、skip-grant-tables を削除します。
9. Mysqlを再起動します。
10. これで、新しいパスワードでログインできるようになります mysql -u root -p
Mysqlを停止します。
[ec2-user@ip-○○○-○○-○○-○ ~]$ sudo systemctl stop mariadb
本番環境(ec2)の場所で、vim /etc/my.cnfまたは/etc/mysql/my.cnfを入力する。
[ec2-user@ip-○○○-○○-○○-○ ~]$ sudo vim /etc/my.cnf
ログインをする際にパスワードを聞かれない様にするために、
以下の画像の様に[mysqld]と書かれている下にskip-grant-tablesを入力する。
Mysqlを再起動します。
[ec2-user@ip-○○○-○○-○○-○ ~]$ sudo systemctl restart mariadb
ログインする
[ec2-user@ip-○○○-○○-○○-○ ~]$ mysql -u root -p
Entrを押すとログインできます。
新しいパスワードを設定する
MariaDB > update user set password=PASSWORD("設定したいパスワード") where User='root';
権限設定の反映
MariaDB > flush privileges;
→exitで一旦出る
MariaDB > exit
/etc/my.cnfに戻って、skip-grant-tables を削除します。
このままだとMariaDBにログインした際に誰でもログインできてしまうので削除しておきましょう。
[ec2-user@ip-○○○-○○-○○-○ ~]$ vim /etc/my.cnf
[mysqld]
skip-grant-tables ←削除
MariaDBを再起動しましょう!
[ec2-user@ip-○○○-○○-○○-○ ~]$ sudo systemctl restart mariadb
これで、新しいパスワードでログインできるようになります
設定できたパスワードでログインしてみましょう!
[ec2-user@ip-○○○-○○-○○-○ ~]$ mysql -u root -p
Enter password:
まとめ
自分もやってみて改めて思ったけどデータベースの設定など難しいなぁ、、、
パスワードの設定ミスにはくれぐれも気をつけましょう。