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+O
と ENTER
を押してファイルを保存し、CTRL+X
を押してファイルを閉じます。
ここで、--skip-grant-tables
オプションを使用すると、パスワードなしですべての権限で MySQL データベース サーバーに接続できるようになります。また、ALTER USER
や SET PASSWORD
などのアカウント管理ステートメントも無効になります。 --skip-networking
オプションは、他のクライアントがデータベース サーバーに接続するのを防ぐために使用されます。すべてのリモート接続が無効になるため、データベース サーバーを通常どおり再起動するまで、リモート クライアントはデータベース サーバーにアクセスできません。
3. 次のコマンドを使用して systemd
構成を再ロードします。
sudo systemctl daemon-reload
4. MySQL サービスを開始します。
sudo systemctl start mysql
これにより、--skip-grant-table
s および --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 パスワードを数分で回復できます。もう失くさないでください。パスワードを記憶するか、安全な場所に保存してください。