Ubuntu で MySQL ルート パスワードをリセットする

Mehvish Ashiq 2023年6月20日
  1. Ubuntu で忘れた MySQL root パスワードをリセットする
  2. mysql_secure_installation で MySQL root パスワードを設定する際のエラーを修正
Ubuntu で MySQL ルート パスワードをリセットする

このチュートリアルでは、Ubuntu で MySQL root パスワードをリセットする必要がある 2つのシナリオを検討します。 まず、root パスワードを忘れてリセットしたい場合。 2つ目は、mysql_secure_installationroot パスワードを設定できない場合です。

このチュートリアルの手順は、MySQL バージョン 8.0.29 および Ubuntu 20.04.4 を使用してテストされています。 以下の両方のシナリオの解決策を見てみましょう。

Note
MySQL が実行されている Ubuntu 20.04.4 サーバーに スーパーユーザー または root 権限でアクセスするその他の方法でアクセスできる必要があります。

Ubuntu で忘れた MySQL root パスワードをリセットする

データベースの強力なパスワードを保持することは正しいことですが、覚えるのは難しい場合があります。 MySQL root パスワードを忘れた場合はどうなりますか?

パニックにならない! 私たちの多くはこの問題に直面していますが、更新する方法があります。

  1. 次のコマンドを使用して MySQL のバージョンを確認します。

    $ mysql --version
    
  2. MySQL サーバーをシャットダウンします。

    このようにして、セーフモードで簡単に再起動してrootパスワードをリセットできます. システムの root パスワードを入力する必要があります。この場合は Ubuntu です。

  3. テーブル許可なしで 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 にさまざまなパラメーターを含む新しい起動コマンドを提供します。 これらのパラメーターは、ネットワーキングおよび許可テーブルのロードを無効にします。

  4. 更新を適用するには、次のコマンドを実行して systemd 構成をリロードします。

    sudo systemctl daemon-reload
    
  1. 次のコマンドを使用して MySQL サーバーを起動します。 出力は生成されませんが、MySQL サーバーのステータスを確認できます。

    sudo systemctl start mysql
    

    今回は、ネットワーキングと許可テーブルは有効になっていません。

  2. root ユーザーとしてデータベースに接続します。

    sudo mysql -u root
    
  3. これで、パスワードを変更できますが、その前に、次のコマンドを使用して、データベース サーバーに許可テーブルをリロードするように指示します。

    mysql> FLUSH PRIVILEGES;
    
  4. 以下のステートメントを実行して、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 シェルを終了します。

  5. 次のコマンドを実行して、MySQL サーバーを通常の設定に戻します。

    sudo systemctl revert mysql
    

    次のような出力が表示されます。これは、上記のステートメントが正常に実行されたことを意味します。

    Removed /etc/systemd/system/mysql.service.d/override.conf.
    Removed /etc/systemd/system/mysql.service.d.
    
  6. 変更を適用するには、systemd 構成をリロードします。

    sudo systemctl daemon-reload
    
  1. 次のように MySQL サーバーを再起動します。

    sudo systemctl restart mysql
    
  2. 次のステートメントを実行して、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.

心配しないで! これがその解決策です。

  1. mysql_secure_installation のプロセスを強制終了するか、ターミナルを閉じます。

  2. 次のステートメントを使用して、MySQL サーバーにログインします。

    sudo mysql
    

    システムの root パスワードを入力するよう求められます。 パスワードを入力すると、MySQL コンソールに移動します。

  3. 次の ALTER ステートメントを実行します。 my_new_password をパスワードに置き換えることを忘れないでください。

    mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'my_new_password';
    

    さらに、exit と入力して MySQL シェルを終了します。

  4. 以下のステートメントを使用して、新しいパスワードでログインします。

    mysql -u root -p
    

    最後に、root ユーザーとして MySQL サーバーにログインできます。

著者: Mehvish Ashiq
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

関連記事 - MySQL Root