在 Windows 系統中管理 MySQL 資料庫時,root 帳號密碼遺忘是常見的運維難題。本文提供兩種經實測有效的重置方案,涵蓋 MySQL 5.5 及更新版本的操作步驟,幫助您快速恢復資料庫存取權限。
此方法利用 --skip-grant-tables 參數啟動服務,暫時繞過權限驗證,再透過另一視窗修改密碼。
cd D:\Program Files\MySQL\MySQL Server 5.5\bin
net stop mysql
mysqld --skip-grant-tables
cd D:\Program Files\MySQL\MySQL Server 5.5\bin
mysql -uroot -p
提示輸入密碼時直接按 Enter 鍵。
UPDATE mysql.user SET authentication_string=PASSWORD('新密碼') WHERE User='root';
FLUSH PRIVILEGES;
EXIT;
注意:MySQL 5.7+ 版本密碼欄位為 authentication_string,舊版為 password。
net start mysql
若您使用的是 MySQL 5.1 或更早版本,可嘗試此傳統流程:
services.msc) 停止 MySQL 服務。mysqld-nt --skip-grant-tables
mysql -u root
UPDATE mysql.user SET password=PASSWORD('新密碼') WHERE User='root';
FLUSH PRIVILEGES;
QUIT;
C:\Program Files\MySQL\MySQL Server X.X\bin 或自訂目錄。net stop/start 會失敗。password 欄位,5.7 之後改為 authentication_string;8.0 更建議使用 ALTER USER 'root'@'localhost' IDENTIFIED BY '新密碼'; 語法。--skip-grant-tables 參數並正常啟動服務,避免資料庫處於無保護狀態。非 Windows 環境下,核心邏輯相同,指令微調如下:
# 1. 停止服務
systemctl stop mysqld
# 2. 跳過權限啟動
mysqld_safe --skip-grant-tables &
# 3. 免密登入修改密碼
mysql -u root
UPDATE mysql.user SET authentication_string=PASSWORD('新密碼') WHERE User='root';
FLUSH PRIVILEGES;
EXIT;
# 4. 正常重啟
systemctl restart mysqld
掌握上述方法,即可在遺忘 root 密碼時從容應對,將業務中斷時間降至最低。