跳過權限驗證啟動 MySQL,以無密碼 root 身分修改 mysql.user 表密碼欄位,重啟正常服務。
reset_root.sql:-- 5.7.6+ / 8.0
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
-- 5.0 / 5.1 / 5.5 / 5.6
UPDATE mysql.user SET Password = PASSWORD('123456') WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;
net stop mysql(或 net stop mysql50)。"C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe" --init-file="C:\reset_root.sql" --console
觀察主控台輸出,見 ready for connections 表示腳本已執行。
net start mysql。mysql -u root -p123456。net stop mysql
cd "C:\Program Files\MySQL\MySQL Server 5.0\bin"
start mysqld-nt --skip-grant-tables --skip-networking
REM 新開 CMD 視窗
mysql -u root
USE mysql;
UPDATE user SET Password = PASSWORD('123456') WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;
EXIT;
Ctrl+C 關閉 mysqld-nt 視窗
net start mysql
service mysql stop
mysqld_safe --skip-grant-tables --skip-networking &
mysql -u root
USE mysql;
UPDATE user SET Password = PASSWORD('123456') WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;
EXIT;
pkill mysqld
service mysql start
services.msc 停止 MySQL 服務。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL\ImagePath,在路徑末尾加 --skip-grant-tables。Password(非 authentication_string)。PASSWORD() 雜湊為 16 字元十六進位(41 字元為 4.1+ 格式)。old_passwords=1,需同步設定 SET PASSWORD = OLD_PASSWORD('123456')。mysql -u root -p123456 -e "SELECT VERSION(), CURRENT_USER();"
mysql -u root -p123456 -e "SHOW VARIABLES LIKE 'old_passwords';"
dba@'10.0.0.%',弱化 root 使用頻率。mysql.user 表異動(審計觸發器/Binlog 解析)。三種找回路徑覆蓋所有場景,建議預先演練 --init-file 方案,實戰零壓力。