首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Windows 下 MySQL root 密碼重置:--init-file 官方標準流程

     編輯:MySQL 資料庫相關知識

官方文件規定的 Windows 環境重置 root 密碼標準流程,使用 --init-file 啟動參數執行密碼變更 SQL,避免 --skip-grant-tables 的安全風險。

前置條件

  • Windows 系統管理員權限
  • MySQL 服務已停止

步驟 1:建立初始化 SQL 檔案

建立 C:\mysql-init.txt,內容單行:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');

💡 MySQL 5.7+ 請用:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPassword';

步驟 2:以 --init-file 啟動 MySQL

一般安裝(zip 解壓版)

C:\> C:\mysql\bin\mysqld-nt --init-file=C:\mysql-init.txt

MySQL Installer 安裝版(需指定 --defaults-file)

  1. 服務管理員 → MySQL 服務 → 內容 → 「執行檔路徑」欄位複製 --defaults-file=... 參數
  2. 命令列執行:
    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

步驟 3:驗證與清理

  1. 服務啟動成功後,刪除 C:\mysql-init.txt(含明文密碼)
  2. 停止手動啟動的 mysqld 進程
  3. 透過服務管理員正常啟動 MySQL 服務
  4. 用新密碼測試連線

Unix/Linux 環境對應

# 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 安全:不會開放無密碼存取
  • ✅ MySQL 8.0 PASSWORD() 已移除,**必須用 ALTER USER ... IDENTIFIED BY**
  • ✅ 重置後檢查 root@% 是否存在,建議刪除或改密
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved