以 --skip-grant-tables 啟動 mysqld,跳過權限表驗證,無密碼登入後更新 mysql.user 表密碼列,再刷新權限、正常重啟。
任務管理器 → 詳情 → 找到 mysqld.exe / mysqld-nt.exe → 結束任務。
# 進入 MySQL bin 目錄(視安裝路徑調整)
d:
cd wamp\mysql\bin
# 跳過權限表啟動
mysqld --skip-grant-tables
窗口光標閃爍不接受輸入即表示成功後台運行。
# 同目錄下
mysql -u root
# 進入 mysql 系統庫
USE mysql;
# 更新密碼(MySQL 5.7+ 使用 authentication_string,8.0+ 同)
UPDATE user SET authentication_string=PASSWORD('123456') WHERE User='root';
-- 旧版本:UPDATE user SET Password=PASSWORD('123456') WHERE User='root';
# 刷新權限
FLUSH PRIVILEGES;
# 退出
EXIT;
--skip-grant-tables 的命令行窗口(Ctrl+C);123456 登入驗證。| 現象 | 原因與解決 |
|---|---|
| UPDATE 提示 Unknown column 'Password' | MySQL 5.7+ 欄位改為 authentication_string |
| FLUSH PRIVILEGES 報錯 | 確保在 USE mysql; 後執行 |
| 重啟後仍無法登入 | 檢查是否仍以 --skip-grant-tables 運行,必須正常啟動 |
| 權限不足無法寫入 user 表 | 以管理員身份運行命令提示符 |
systemctl stop mysqld
mysqld_safe --skip-grant-tables &
mysql -u root
UPDATE mysql.user SET authentication_string=PASSWORD('newpass') WHERE User='root';
FLUSH PRIVILEGES;
EXIT;
pkill mysqld
systemctl start mysqld