ウェブサイト検索

Ubuntu Linux 上の MySQL 8 で root パスワードをリセットする方法


MySQL データベースの root ユーザー パスワードを忘れましたか?心配ない!このステップバイステップガイドでは、Ubuntu 20.04 オペレーティング システム上の MySQL 8 で root パスワードをリセットする方法について説明します。

注: すでにご存じのとおり、MySQL 5.7 以降のバージョンを実行している Ubuntu システムでは、MySQL root ユーザーは auth_socket プラグインを使用して MySQL サーバーで認証します。したがって、システム ユーザーの sudo パスワードを知っている限り、sudo mysql コマンドを使用して root ユーザーとして MySQL サーバーにログインできます。その場合、MySQL の root パスワードを変更する必要はありません。すでに MySQL ルート ユーザーの認証方法を caching_sha2_password または mysql_native_password に変更している場合は、以下の手順に従って root をリセットします。 MySQL データベースのパスワード。

Ubuntu Linux 上の MySQL 8 で root パスワードをリセットする

1. まず、次のコマンドを使用して MySQL サービスを停止します。

sudo systemctl stop mysql

これにより、MySQL サービスが実行中の場合は停止します。次のコマンドを使用して、MySQL サービスのステータスを確認できます。

sudo systemctl status mysql

サンプル出力:

● mysql.service - MySQL Community Server
      Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
      Active: inactive (dead) since Mon 2021-05-31 11:01:15 UTC; 1min 15s ago
     Process: 1446 ExecStart=/usr/sbin/mysqld (code=exited, status=0/SUCCESS)
    Main PID: 1446 (code=exited, status=0/SUCCESS)
      Status: "Server shutdown complete"
 May 31 07:57:50 ubunt4.localdomain systemd[1]: Starting MySQL Community Server…
 May 31 07:57:51 ubunt4.localdomain systemd[1]: Started MySQL Community Server.
 May 31 11:01:14 ubunt4.localdomain systemd[1]: Stopping MySQL Community Server…
 May 31 11:01:15 ubunt4.localdomain systemd[1]: mysql.service: Succeeded.
 May 31 11:01:15 ubunt4.localdomain systemd[1]: Stopped MySQL Community Server.

MySQLサービスを停止する

2. 次に、権限チェックを行わずに MySQL サーバーを起動します。これを行うには、次を実行します。

sudo systemctl edit mysql

これにより、デフォルトのテキスト エディタである mysql systemd 設定ファイルが開きます。私の場合、それは nano エディターです。

そこに次の行を追加します。

[Service]
ExecStart=
ExecStart=/usr/sbin/mysqld --skip-grant-tables --skip-networking

mysql systemd設定ファイルを編集する

上記の行を追加した後、CTRL+OENTER を押してファイルを保存し、CTRL+X を押してファイルを閉じます。

ここで、--skip-grant-tables オプションを使用すると、パスワードなしですべての権限で MySQL データベース サーバーに接続できるようになります。また、ALTER USERSET PASSWORD などのアカウント管理ステートメントも無効になります。 --skip-networking オプションは、他のクライアントがデータベース サーバーに接続するのを防ぐために使用されます。すべてのリモート接続が無効になるため、データベース サーバーを通常どおり再起動するまで、リモート クライアントはデータベース サーバーにアクセスできません。

3. 次のコマンドを使用して systemd 構成を再ロードします。

sudo systemctl daemon-reload

4. MySQL サービスを開始します。

sudo systemctl start mysql

これにより、--skip-grant-tables および --skip-networking オプションを使用して MySQL サーバーが起動します。 MySQL サービスのステータスをチェックすることで確認できます。

sudo systemctl status mysql
 ● mysql.service - MySQL Community Server
      Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
     Drop-In: /etc/systemd/system/mysql.service.d
              └─override.conf
      Active: active (running) since Mon 2021-05-31 11:39:18 UTC; 1min 23s ago
     Process: 1882 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
    Main PID: 1905 (mysqld)
      Status: "Server is operational"
       Tasks: 36 (limit: 2280)
      Memory: 331.0M
      CGroup: /system.slice/mysql.service
              └─1905 /usr/sbin/mysqld --skip-grant-tables --skip-networking
 May 31 11:39:16 ubunt4.localdomain systemd[1]: Starting MySQL Community Server…
 May 31 11:39:18 ubunt4.localdomain systemd[1]: Started MySQL Community Server.

5. 次に、パスワードなしで root ユーザーとして MySQL サーバーに接続します。

sudo mysql -u root

すぐに MySQL シェル プロンプト内に移動します。

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.25-0ubuntu0.20.04.1 (Ubuntu)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

6. 付与テーブルをロードせずにデータベース サーバーにログインしました (--skip-grant-tables オプションを使用したため)。したがって、パスワードをリセットするために必要な ALTER USER コマンドを使用することはできません。付与テーブルをロードするには、MySQL シェル プロンプトから次のコマンドを実行します。

mysql> FLUSH PRIVILEGES;

7. 次に、次のコマンドのいずれかを実行して、MySQL root パスワードをリセットします。

caching_sha2_password プラグインを使用している場合は、次を実行します。

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Password123#@!';

Ubuntu Linux 上の MySQL 8 で root パスワードをリセットする

mysql_native_password プラグインを使用する場合は、代わりにこれを実行します。

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Password123#@!';

Password123#@! を自分のものに置き換えます。

MySQL root パスワードを変更した後、MySQL シェル プロンプトを終了します。

mysql> exit

8. 次のコマンドを使用して、変更した systemd 構成を通常の設定に戻します。

sudo systemctl revert mysql

これにより、変更されたすべてのファイルが削除されます。

Removed /etc/systemd/system/mysql.service.d/override.conf.
Removed /etc/systemd/system/mysql.service.d.

9. systemd 構成を再ロードして、変更を有効にします。

sudo systemctl daemon-reload

10. 最後に、MySQL サーバーを通常どおり再起動します。

sudo systemctl restart mysql

11. これで、次のコマンドを使用して、新しいパスワードを使用して root ユーザーとして MySQL データベースに接続できるようになります。

mysql -u root -p

root パスワードを入力して、MySQL シェル プロンプトにアクセスします。

mysql> 

Linux で MySQL の root パスワードを変更する別の方法もあります。この方法とは少し異なります。知りたい場合は、次のリンクをご覧ください。

>> How To Reset MySQL Root User Password In Linux

結論

ご覧のとおり、MySQL の root パスワードのリセットは簡単です。上記の手順に注意深く従った場合は、MySQL データベースの root パスワードを数分で回復できます。もう失くさないでください。パスワードを記憶するか、安全な場所に保存してください。

関連記事