1. 程式人生 > >如何在MySQL 8中重置root密碼

如何在MySQL 8中重置root密碼

MySQL中的使用者密碼儲存在使用者表中,密碼重置實際上是改變該表中記錄的值。 要在忘記密碼的情況下更改密碼,我們的想法是繞過MySQL的身份驗證進入系統並使用SQL命令更新記錄密碼值。

在MySQL 5中,可以使用--skip-grant-tables選項啟動MySQL服務,此選項將告訴服務在啟動時跳過載入授權表,因此root使用者可以使用空密碼登入。

mysqld –skip-grant-tables

登入後,可以在SQL命令下執行更改密碼

UPDATE user SET authentication_string='' WHERE user='root';

這會將密碼設定為空。

但是,如果沒有在MySQL 8中進行一些調整,似乎--skip-grant-tables無法正常工作。那麼我們可以做些什麼呢? 有兩種可能的選擇。

建立一個--init-file.並使用選項--init-file執行MySQL服務。 在init檔案中,輸入要更新密碼值的SQL命令。
深入研究如何在MySQL 8中使用--skip-grant-tables。

我們來看看這些選項的工作原理。

選項1: --init-file option

此選項將指定包含要在服務啟動之前執行的SQL命令的檔案。 因此,我們只需要使用命令更新此檔案中的密碼並使用此選項啟動MySQL服務。 密碼將被重置/更新。

第1步:停止MySQL服務

net stop mysql

步驟2:建立一個txt檔案,並將下面的命令放入

ALTER USER 'root'@'localhost' IDENTIFIED BY '';

步驟3:在命令列上啟動服務,並使用--init-file選項

mysqld --init-file=/some/path/to/cmd.txt --console

完成。 注意:當您遇到許可權被拒絕的錯誤時,請以特權使用者身份執行該命令。 如果你看到如下錯誤:

2018-12-27T05:51:23.739089Z 0 [System] [MY-010116] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe (mysqld 8.0.13) starting as process 1912
2018-12-27T05:51:23.759426Z 1 [ERROR] [MY-011011] [Server] Failed to find valid data directory.
2018-12-27T05:51:23.761196Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
2018-12-27T05:51:23.762550Z 0 [ERROR] [MY-010119] [Server] Aborting
2018-12-27T05:51:23.766230Z 0 [System] [MY-010910] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe: Shutdown complete (mysqld 8.0.13)  MySQL Community Server - GPL.

請執行以下命令初始化資料目錄

mysqld --initialize --console

選項2:使用--skip-grant-tables選項

與MySQL 5相比,MySQL 8中還需要新增更多選項。

mysqld --console --skip-grant-tables --shared-memory

啟動服務後,使用空密碼登入

mysql -u root

然後執行SQL命令更新密碼

UPDATE mysql.user SET authentication_string='' WHERE user='root' and host='localhost';

通常建議選項1。 並希望本文對你有所幫助。