Ubuntu で MySQL ルート パスワードをリセットする
このチュートリアルでは、Ubuntu で MySQL root
パスワードをリセットする必要がある 2つのシナリオを検討します。 まず、root
パスワードを忘れてリセットしたい場合。 2つ目は、mysql_secure_installation
で root
パスワードを設定できない場合です。
このチュートリアルの手順は、MySQL バージョン 8.0.29 および Ubuntu 20.04.4 を使用してテストされています。 以下の両方のシナリオの解決策を見てみましょう。
スーパーユーザー
または root
権限でアクセスするその他の方法でアクセスできる必要があります。Ubuntu で忘れた MySQL root
パスワードをリセットする
データベースの強力なパスワードを保持することは正しいことですが、覚えるのは難しい場合があります。 MySQL root
パスワードを忘れた場合はどうなりますか?
パニックにならない! 私たちの多くはこの問題に直面していますが、更新する方法があります。
-
次のコマンドを使用して MySQL のバージョンを確認します。
$ mysql --version
-
MySQL サーバーをシャットダウンします。
このようにして、セーフモードで簡単に再起動して
root
パスワードをリセットできます. システムのroot
パスワードを入力する必要があります。この場合は Ubuntu です。 -
テーブル許可なしで MySQL サーバーを起動するには、次のコマンドを使用して
systemd
構成ファイルを更新し、起動時に追加のコマンド ライン パラメーターを MySQL サーバーに渡します。sudo systemctl edit mysql
Enter を押すとすぐに、
nano
エディターを使用してファイルが開きます。 これを使用して、MySQL のサービス オーバーライド
を編集します。このようにして、MySQL のデフォルトのサービス パラメータを更新できます。
nano
エディターで開いたばかりの空のファイルに以下を追加します。[Service] ExecStart= ExecStart=/usr/sbin/mysqld --skip-grant-tables --skip-networking
上記の内容をファイルに貼り付けたら、Ctrl+X を押してファイルを終了し、Y を押して今行った更新を保存します。 、および Enter を押してファイルの名前を確認します。
ここで、
ExecStart
は最初にすべてのデフォルト値をクリアしてから、systemd
にさまざまなパラメーターを含む新しい起動コマンドを提供します。 これらのパラメーターは、ネットワーキングおよび許可テーブルのロードを無効にします。 -
更新を適用するには、次のコマンドを実行して
systemd
構成をリロードします。sudo systemctl daemon-reload
-
次のコマンドを使用して MySQL サーバーを起動します。 出力は生成されませんが、MySQL サーバーのステータスを確認できます。
sudo systemctl start mysql
今回は、ネットワーキングと許可テーブルは有効になっていません。
-
root
ユーザーとしてデータベースに接続します。sudo mysql -u root
-
これで、パスワードを変更できますが、その前に、次のコマンドを使用して、データベース サーバーに許可テーブルをリロードするように指示します。
mysql> FLUSH PRIVILEGES;
-
以下のステートメントを実行して、MySQL
root
ユーザーのパスワードをリセットします。my_new_password
を覚えやすい強力なパスワードに置き換えることを忘れないでください。ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'my_new_password';
ここで、MySQL ではカスタム認証を使用できます。 したがって、上記のステートメントにより、MySQL はデフォルトの認証を使用して、新しいパスワードを介して MySQL
root
ユーザーを認証するようになります。ブラボー! MySQL
root
ユーザーのパスワードが変更されました。exit
と入力して、MySQL シェルを終了します。 -
次のコマンドを実行して、MySQL サーバーを通常の設定に戻します。
sudo systemctl revert mysql
次のような出力が表示されます。これは、上記のステートメントが正常に実行されたことを意味します。
Removed /etc/systemd/system/mysql.service.d/override.conf. Removed /etc/systemd/system/mysql.service.d.
-
変更を適用するには、
systemd
構成をリロードします。sudo systemctl daemon-reload
-
次のように MySQL サーバーを再起動します。
sudo systemctl restart mysql
-
次のステートメントを実行して、MySQL
root
ユーザーとして新しいパスワードでログインします。mysql -u root -p
MySQL
root
ユーザーのパスワードを入力するよう求められます。 新しいパスワードを入力して、データベース サーバーにアクセスしてください。
mysql_secure_installation
で MySQL root
パスワードを設定する際のエラーを修正
初めて MySQL サーバーを インストール するユーザーは、mysql_secure_installation
で MySQL root
パスワードを設定しているときに生成される次のエラーに遭遇した可能性があります。
Failed! Error: SET PASSWORD has no significance for user 'root'@'localhost' as the authentication method used doesn't store authentication data in the MySQL server. Please consider using ALTER USER instead if you want to change authentication parameters.
心配しないで! これがその解決策です。
-
mysql_secure_installation
のプロセスを強制終了するか、ターミナルを閉じます。 -
次のステートメントを使用して、MySQL サーバーにログインします。
sudo mysql
システムの
root
パスワードを入力するよう求められます。 パスワードを入力すると、MySQL コンソールに移動します。 -
次の
ALTER
ステートメントを実行します。my_new_password
をパスワードに置き換えることを忘れないでください。mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'my_new_password';
さらに、
exit
と入力して MySQL シェルを終了します。 -
以下のステートメントを使用して、新しいパスワードでログインします。
mysql -u root -p
最後に、
root
ユーザーとして MySQL サーバーにログインできます。