天天看點

一鍵清空本地MySQL8.0密碼腳本,再也不用擔心MySQL密碼忘記了

之前我開發了一個爆破MySQL簡單密碼的Python腳本,但是對于MySQL就安裝在自己機器上這種情況根本沒有必要,隻要我們擁有關閉和啟動MySQL服務程序的權限,我們就可以直接重設密碼。

具體原理:

  1. 結束MySQL服務程序
  2. 以跳過權限表檢查的方式啟動MySQL服務程序
  3. 修改存儲使用者密碼的表,指定root本地使用者的密碼為空
  4. 以正常方式啟動MySQL服務程序
注意:指令行方式操作服務程序需要管理者權限

最終編寫如下cmd腳本(儲存檔案名字尾為.cmd):

TASKKILL /F /IM mysqld.exe /T
start D:\software\mysql-8.0.25-winx64\bin\mysqld --console --skip-grant-tables --shared-memory
echo UPDATE mysql.user SET authentication_string='' WHERE user='root' and host='localhost';>t.sql
TIMEOUT /T 2
D:\software\mysql-8.0.25-winx64\bin\mysql<t.sql
TASKKILL /F /IM mysqld.exe /T
net start mysql8.0           

以管理者身份運作以上腳本,即可清空本地MySQL的密碼:

一鍵清空本地MySQL8.0密碼腳本,再也不用擔心MySQL密碼忘記了

之是以寫

D:\software\mysql-8.0.25-winx64\bin\

這種全路徑形式是因為我沒有将MySQL的bin目錄加入path環境變量,若你的電腦已經将該目錄加入環境則可以去掉,否則修改為你的MySQL安裝位置的bin目錄。

net start mysql8.0

啟動了名稱為mysql8.0的服務。這是我在前面安裝MySQL8.0時這麼命名服務名稱的,詳見:

不解除安裝原有mysql直接安裝mysql8.0

連結:

https://blog.csdn.net/as604049322/article/details/113204880

需要更換為你的MySQL注冊的服務名稱。若沒有注冊服務,則需要按照你平時啟動MySQL服務的方法啟動。

執行完以上腳本後就可以免密登入MySQL了,登入後就可以執行以下指令,修改MySQL為任意密碼(這裡修改密碼為123456):

ALTER user 'root'@'localhost' IDENTIFIED BY '123456';           

然後重新開機MySQL服務使密碼生效:

net start mysql8.0
net stop mysql8.0           

其實我們也可以腳本中自行進行管理者權限提權,這樣就可以直接輕按兩下腳本運作。

隻需在腳本開頭加上如下這行指令:

%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit           

對于MySQL 5.x版本,重置腳本更加簡單,可以直接在腳本中設定MySQL密碼。

參考腳本内容為:

TASKKILL /F /IM mysqld.exe /T
start mysqld --skip-grant-tables
echo ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';>t.sql
TIMEOUT /T 2
mysql<t.sql
TASKKILL /F /IM mysqld.exe /T
net start MySQL           

根據實際情況修改即可。