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 mysqlEnter を押すとすぐに、 nanoエディターを使用してファイルが開きます。 これを使用して、MySQL のサービス オーバーライドを編集します。
このようにして、MySQL のデフォルトのサービス パラメータを更新できます。
`nano` エディターで開いたばかりの空のファイルに以下を追加します。
[Service]
ExecStart=
ExecStart=/usr/sbin/mysqld --skip-grant-tables --skip-networking
上記の内容をファイルに貼り付けたら、<kbd>Ctrl</kbd>+<kbd>X</kbd> を押してファイルを終了し、<kbd>Y</kbd> を押して今行った更新を保存します。 、および <kbd>Enter</kbd> を押してファイルの名前を確認します。
ここで、`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 -pMySQL 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 サーバーにログインできます。