ウェブサイト検索

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 関連記事もお読みください。

  1. CentOS、RHEL、Fedora に MySQL 8 をインストールする方法
  2. MySQL のパフォーマンスのチューニングと最適化に役立つ 15 のヒント
  3. Linux 向けの 12 の MySQL セキュリティ実践
  4. MySQL のパフォーマンスを監視するための 4 つの便利なコマンドライン ツール
  5. MySQL データベース管理コマンド
結論

この記事では、MySQL 8.0 サーバーの失われた root パスワードをリセットする方法を学びました。手続きが簡単だったら幸いです。