Amazon Linux 2 を実行している Amazon Elastic Compute Cloud (Amazon EC2) インスタンスで MariaDB ルートパスワードをリセットする方法を教えてください。
簡単な説明
デフォルトでは、Amazon Linux 2 上の MariaDB 5.5 にはルートパスワードがありません。MariaDB のルートパスワードを作成し、データベースからロックアウトした場合、ルートパスワードをリセットする必要があります。
注意: ルートパスワードをリセットしている間は、データベースにクエリを実行できません。
解決方法
1. MariaDB データディレクトリが存在するボリュームの最新のスナップショットがあることを確認します。必要に応じて、このスナップショットからボリュームを再作成できます。
2. MariaDB サービスを停止します。
sudo systemctl stop mariadb
3. MariaDB をセーフモードで起動します。
sudo mysqld_safe --skip-grant-tables --skip-networking &
4. 次のコマンドを実行して MariaDB コマンド履歴を /dev/null に設定し、MariaDB モニターにログインします。
重要: コマンド履歴 /dev/null を設定すると、パスワード情報が履歴ファイルにプレーンテキストで表示されなくなります。この値は、完全な手順を完了した後にリセットできます。
export MYSQL_HISTFILE=/dev/null
mysql -u root
5. MariaDB ルートパスワードを更新します。
UPDATE mysql.user SET Password = PASSWORD('new_password_here') WHERE User = 'root';
出力は次のようになります。
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
6. 権限をフラッシュして、付与テーブルを再ロードします。新しいパスワードは、再ロード後に有効になります。
FLUSH PRIVILEGES;
7. MariaDB モニターを終了します。
exit
8. MariaDB プロセスを停止します。
sudo kill `sudo cat /var/run/mariadb/mariadb.pid`
注意: プロセスの終了には数秒かかることがあります。
9. MariaDB サービスを開始します。
sudo systemctl start mariadb
10. 新しい MariaDB ルートパスワードをテストします。
mysql -u root -p