MySQL 8.0 で root パスワードをリセットする方法
不幸にして MySQL の root パスワードを忘れたり紛失したりした場合、何らかの方法でパスワードを回復する方法が必ず必要になります。知っておく必要があるのは、パスワードが users テーブルに保存されていることです。これは、パスワード レコードを更新できるように、MySQL 認証をバイパスする方法を見つける必要があることを意味します。
幸いなことに、簡単に達成できる方法があり、このチュートリアルでは、MySQL 8.0 バージョンで root パスワードを回復またはリセットするプロセスについて説明します。
MySQL のドキュメントによると、root MySQL パスワードをリセットするには 2 つの方法があります。両方をレビューします。
–init-file を使用して MySQL ルート パスワードをリセットする
root パスワードをリセットする方法の 1 つは、ローカル ファイルを作成し、次に示すように --init-file
オプションを使用して MySQL サービスを開始することです。
# vim /home/user/init-file.txt
ファイルが mysql ユーザーによって読み取り可能であることを確認することが重要です。そのファイル内に次の内容を貼り付けます。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
上記の「new_password」を使用するパスワードに変更します。

次に、MySQL サービスが停止していることを確認します。次のことができます。
# systemctl stop mysqld.service # for distros using systemd # /etc/init.d/mysqld stop # for distros using init
次に、以下を実行します。
# mysqld --user=mysql --init-file=/home/user/init-file.txt --console
これにより MySQL サービスが開始され、そのプロセス中に作成した init ファイルが実行されるため、root ユーザーのパスワードが更新されます。パスワードをリセットしたら、必ずファイルを削除してください。

必ずサーバーを停止し、その後通常どおり起動してください。
# systemctl stop mysqld.service # for distros using systemd # systemctl restart mysqld.service # for distros using systemd # /etc/init.d/mysqld stop # for distros using init # /etc/init.d/mysqld restart # for distros using init
これで、新しいパスワードを使用して root として MySQL サーバーに接続できるようになります。
# mysql -u root -p

–skip-grant-tables を使用して MySQL ルート パスワードをリセットする
2 番目のオプションは、--skip-grant-tables
オプションを使用して MySQL サービスを開始することです。この方法でサービスが開始されている間は、すべてのユーザーがパスワードなしで接続できるため、これは安全性が低くなります。
サーバーが --skip-grant-tables
で起動されると、--skip-networking
のオプションが自動的にアクティブ化されるため、リモート接続は使用できなくなります。
まず、MySQL サービスが停止していることを確認します。
# systemctl stop mysqld.service # for distros using systemd # /etc/init.d/mysqld stop # for distros using init
次に、次のオプションを使用してサービスを開始します。
# mysqld --skip-grant-tables --user=mysql &
その後、実行するだけで mysql サーバーに接続できます。
# mysql
--skip-grant-tables
オプションを使用してサービスを開始するとアカウント管理が無効になるため、許可を再ロードする必要があります。こうすることで、後でパスワードを変更できるようになります。
# FLUSH PRIVILEGES;
これで、次のクエリを実行してパスワードを更新できるようになります。 「new_password」を実際に使用するパスワードに変更してください。
# ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_passowrd';

次に、MySQL サーバーを停止し、通常どおり起動します。
# systemctl stop mysqld.service # for distros using systemd # systemctl restart mysqld.service # for distros using systemd # /etc/init.d/mysqld stop # for distros using init # /etc/init.d/mysqld restart # for distros using init
新しいパスワードで接続できるはずです。
# mysql -u root -p

以下の役立つ MySQL 関連記事もお読みください。
- CentOS、RHEL、Fedora に MySQL 8 をインストールする方法
- MySQL のパフォーマンスのチューニングと最適化に役立つ 15 のヒント
- Linux 向けの 12 の MySQL セキュリティ実践
- MySQL のパフォーマンスを監視するための 4 つの便利なコマンドライン ツール
- MySQL データベース管理コマンド
結論
この記事では、MySQL 8.0 サーバーの失われた root パスワードをリセットする方法を学びました。手続きが簡単だったら幸いです。