MySQLデータベースのrootを忘れましたか ユーザーのパスワード?心配ない!このステップバイステップガイドでは、Ubuntu20.04オペレーティングシステム上のMySQL8でrootパスワードをリセットする方法について説明します。
注: ご存知かもしれませんが、MySQLのrootユーザーはauth_socketを使用します MySQL5.7以降のバージョンを実行しているUbuntuシステムでMySQLサーバーで認証するためのプラグイン。したがって、rootとしてMySQLサーバーにログインできます。 sudo mysqlを持つユーザー システムユーザーのsudoを知っている限りコマンド パスワード。その場合、MySQLのrootを変更する必要はありません。 パスワード。 MySQLルートの認証方法をすでに変更している場合 ユーザーからcaching_sha2_passwordへ またはmysql_native_password 、以下の手順に従って、rootをリセットします MySQLデータベースのパスワード。
UbuntuLinux上のMySQL8で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 ubuntu2004.localdomain systemd[1]: Starting MySQL Community Server…
May 31 07:57:51 ubuntu2004.localdomain systemd[1]: Started MySQL Community Server.
May 31 11:01:14 ubuntu2004.localdomain systemd[1]: Stopping MySQL Community Server…
May 31 11:01:15 ubuntu2004.localdomain systemd[1]: mysql.service: Succeeded.
May 31 11:01:15 ubuntu2004.localdomain systemd[1]: Stopped MySQL Community Server.
2.次に、権限チェックなしでMySQLサーバーを起動します。これを行うには、次を実行します:
$ sudo systemctl edit mysql
これにより、mysqlが開きます systemd 構成ファイルはデフォルトのテキストエディタです。私の場合はnano 編集者。
その中に次の行を追加します:
[Service] ExecStart= ExecStart=/usr/sbin/mysqld --skip-grant-tables --skip-networking
上記の行を追加したら、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
これにより、MySQLサーバーが--skip-grant-tableで起動します。 sおよび--skip-networking オプション。 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 ubuntu2004.localdomain systemd[1]: Starting MySQL Community Server…
May 31 11:39:18 ubuntu2004.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#@!';
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データベースに接続できるようになります。 new passwordを持つユーザー コマンドの使用:
$ mysql -u root -p
rootを入力します MySQLシェルプロンプトにアクセスするためのパスワード:
mysql>
MySQLのrootを変更する別の方法もあります Linuxのパスワード。この方法とは少し異なります。知りたい場合は、次のリンクをご覧ください。
>> How To Reset MySQL Root User Password In Linux
結論
ご覧のとおり、MySQLルートパスワードのリセットは簡単です。上記の手順を注意深く実行すると、MySQLデータベースのルートパスワードを数分で回復できます。二度と失くさないでください。パスワードを覚えておくか、安全な場所に保存してください。