官方文件規定的 Windows 環境重置 root 密碼標準流程,使用 --init-file 啟動參數執行密碼變更 SQL,避免 --skip-grant-tables 的安全風險。
建立 C:\mysql-init.txt,內容單行:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');
💡 MySQL 5.7+ 請用:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPassword';
C:\> C:\mysql\bin\mysqld-nt --init-file=C:\mysql-init.txt
--defaults-file=... 參數C:\> "C:\Program Files\MySQL\MySQL Server 5.x\bin\mysqld-nt.exe" \
--defaults-file="C:\Program Files\MySQL\MySQL Server 5.x\my.ini" \
--init-file=C:\mysql-init.txt
C:\mysql-init.txt(含明文密碼)mysqld 進程# 1. 停止服務
systemctl stop mysqld
# 2. 建立 init 檔
echo "ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass';" > /tmp/mysql-init
# 3. 啟動
mysqld --init-file=/tmp/mysql-init --user=mysql &
# 4. 驗證後刪除 init 檔、正常重啟服務
--init-file 只在啟動時執行一次,**不會持久化到配置**--skip-grant-tables 安全:不會開放無密碼存取PASSWORD() 已移除,**必須用 ALTER USER ... IDENTIFIED BY**root@% 是否存在,建議刪除或改密