MySQLルートパスワードを忘れたり紛失したりするという不幸な事態が発生した場合は、何らかの方法でパスワードを回復する方法が必要になります。知っておく必要があるのは、パスワードがユーザーテーブルに保存されていることです。これは、MySQL認証をバイパスする方法を見つけて、パスワードレコードを更新できるようにする必要があることを意味します。
幸いなことに、簡単に達成できます。このチュートリアルでは、MySQL8.0バージョンでrootパスワードを回復またはリセットするプロセスについて説明します。
MySQLのドキュメントによると、ルートMySQLパスワードをリセットする方法は2つあります。両方を確認します。
–init-fileを使用してMySQLルートパスワードをリセット
ルートパスワードをリセットする方法の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関連の記事も読むことをお勧めします。
- MySQL 8をCentOS、RHEL、Fedoraにインストールする方法
- 15の便利なMySQLパフォーマンスチューニングと最適化のヒント
- Linux用の12のMySQLセキュリティプラクティス
- MySQLのパフォーマンスを監視するための4つの便利なコマンドラインツール
- MySQLデータベース管理コマンド
結論
この記事では、MySQL8.0サーバーの失われたrootパスワードをリセットする方法を学びました。プロセスが簡単だったと思います。