適用於 MySQL 5.0 ~ 8.0 版本,三種方案覆蓋不同場景:跳過授權表啟動、初始化檔案法、MySQL 5.1+ 專用控制台模式。操作前請先備份 data 目錄。
net stop mysql(或服務名 mysql57)。bin 目錄,啟動跳過授權表模式:mysqld --skip-grant-tablesmysql -u rootUSE mysql;
UPDATE user SET authentication_string=PASSWORD('NewPass123!') WHERE User='root';
FLUSH PRIVILEGES;
EXIT;
註:MySQL 5.7+ 密碼欄位為 authentication_string,5.6 及舊版為 password。
mysqld 進程(任務管理器或 Ctrl+C),正常啟動服務:net start mysqlreset_pwd.txt,內容:SET PASSWORD FOR 'root'@'localhost' = PASSWORD('NewPass123!');
net stop mysqlmysqld --init-file=D:\MySQL\mysql-5.7.xx\reset_pwd.txtCtrl+C 停止,正常啟動服務。net stop mysqlmysqld --defaults-file="C:\Program Files\MySQL\MySQL Server 5.7\my.ini" --console --skip-grant-tables
mysql -u root -p(提示密碼直接 Enter)USE mysql;
UPDATE user SET authentication_string=PASSWORD('NewPass123!') WHERE User='root';
FLUSH PRIVILEGES;
QUIT;
net start mysqlcaching_sha2_password,舊版客戶端可能連不上。重置後建議同步修改插件:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NewPass123!';PASSWORD() 函數在 8.0 已移除,必須用 ALTER USER 或 SET PASSWORD 語法。mysql -u root -p'NewPass123!' -e "SELECT USER(), VERSION();"
skip-name-resolve 減少 DNS 延遲,並配合 bind-address=127.0.0.1 限制本機存取。