錯誤操作可能導致服務中斷或無法連線,建議先備份資料,並避免在正式生產環境隨意使用 skip-grant-tables 模式。
本內容僅供系統管理與故障排除用途使用。
MySQL 忘記 root 密碼是 Windows 開發環境中最常見的問題之一,尤其在 XAMPP、MySQL Installer 或 VPS 伺服器中,經常會遇到 ERROR 1045 無法登入的情況。本篇將以實務操作方式,完整教你如何在 Windows 中重置 MySQL root 密碼,包含安全模式啟動、skip-grant-tables 使用方式,以及恢復正常服務的完整流程。
✔ 案例一:XAMPP 使用者忘記 MySQL root 密碼(完整流程)
在 XAMPP 環境中,MySQL 由 Control Panel 管理。當忘記 root 密碼並出現 ERROR 1045 時,必須透過安全模式重置,而不是 phpMyAdmin。
📌 Step 1:停止 MySQL 服務
# XAMPP 直接點 Stop MySQL
# 或 Windows CMD(若已安裝為服務)
net stop mysql
📌 Step 2:進入 MySQL 目錄
C:\xampp\mysql\bin
cd C:\xampp\mysql\bin
📌 Step 3:啟動 skip-grant-tables(關鍵)
mysqld --skip-grant-tables --skip-networking
⚠ 此視窗會卡住是正常的,代表 MySQL 已進入免密碼模式。
📌 Step 4:開啟新 CMD 登入
mysql -u root
📌 Step 5:重設 root 密碼
skip-grant-tables 模式下,必須先執行 FLUSH PRIVILEGES;,之後才能執行 ALTER USER,順序顛倒會直接出現 ERROR 1290 而失敗。
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword123!';
FLUSH PRIVILEGES;
📌 Step 6:重啟 MySQL
net start mysql
✔ 案例二:MySQL Installer 無法登入 root(ERROR 1045)
Windows MySQL Installer 安裝後若出現 ERROR 1045,通常是 root 密碼未設定或遺失。
📌 Step 1:停止服務
net stop mysql80
📌 Step 2:啟動安全模式
mysqld --skip-grant-tables --skip-networking
📌 Step 3:登入 MySQL
mysql -u root
📌 Step 4:重設密碼
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword123!';
FLUSH PRIVILEGES;
📌 Step 5:重新啟動
net start mysql80
✔ 案例三:MySQL Workbench 顯示 ERROR 1045
Workbench 顯示 ERROR 1045 時,問題通常在 MySQL Server,而不是 Workbench 本身。代表 root 密碼錯誤或權限失效,需要直接進行 CLI 重置(依照案例二的步驟操作)。
✔ 案例四:Windows Server / VPS MySQL 無法登入
在 Windows Server 或 VPS 環境中,MySQL 以服務方式運行。可透過以下方式修復:
net stop mysql80
mysqld --skip-grant-tables --skip-networking
修改完成後(記得先 FLUSH PRIVILEGES 再 ALTER USER,詳見案例一 Step 5 的說明)再重新啟動:
net start mysql80
🔒 重點安全提醒
skip-grant-tables 僅能用於維修用途,會暫時關閉 MySQL 權限驗證機制,完成密碼重置後必須立即關閉並恢復正常模式,避免安全風險。
