以 --init-file 參數啟動 MySQL,執行指定 SQL 檔案修改密碼,繞過權限驗證。
services.msc),找到 MySQL(或 MySQL80 等),點擊「停止」。mysqld.exe 進程。用記事本建立 C:\mysql-init.txt,內容僅一行:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewStrongPassword';
注意:MySQL 5.7 以前版本用 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewStrongPassword');。
以管理員身分開啟命令提示字元,執行:
C:\mysql\bin\mysqld --init-file=C:\mysql-init.txt --console
若使用 MySQL Installer 安裝,可能需指定預設配置檔:
"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe"
--defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini"
--init-file=C:\mysql-init.txt --console
--console 讓輸出顯示在視窗,確認啟動成功後關閉視窗。
C:\mysql-init.txt(含明文密碼)。net start mysql。mysql -u root -p
# 輸入新密碼登入
| 現象 | 原因與對策 |
|---|---|
| 啟動閃退、無輸出 | 路徑錯誤、--defaults-file 指向錯誤、權限不足 → 以管理員執行、核對路徑 |
| 密碼仍舊 | init-file 未被讀取、SQL 語法錯誤 → 檢查錯誤日誌、確認版本對應語法 |
| 無法連線 | 服務未啟動、防火牆、bind-address → 啟動服務、檢查 3306 埠 |
systemctl stop mysqld
mysqld_safe --init-file=/tmp/mysql-init.txt &
# 登入驗證後
systemctl restart mysqld
UPDATE mysql.user SET host='localhost' WHERE user='root'; FLUSH PRIVILEGES;