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

Windows 下 MySQL root 密碼重置失敗?完整排查指南

     編輯:MySQL 資料庫相關知識

官方文檔方法在 Windows 失效的常見原因

MySQL 官方文檔提供的 --skip-grant-tables 重置密碼流程在 Linux 有效,但在 Windows 下常因服務管理差異導致失效。本文記錄一次真實踩坑經歷與正確操作步驟。

失敗復盤

  1. 嘗試 mysqld --skip-grant-tables 啟動,無報錯但 3306 端口未監聽
  2. 嘗試 mysql -u root 連接失敗
  3. 誤執行 UPDATE user SET password='';(缺少 PASSWORD() 函數)導致無法登錄
  4. 最終重裝 MySQL 解決

Windows 正確重置流程

方法一:命令行手動控制(推薦)

net stop mysql
mysqld --skip-grant-tables --console
# 新開一個 CMD 窗口
mysql -u root
# 在 MySQL 客戶端內
USE mysql;
UPDATE user SET authentication_string=PASSWORD('newpass') WHERE User='root';
FLUSH PRIVILEGES;
EXIT;
# 關閉 --console 窗口 (Ctrl+C)
net start mysql

方法二:初始化文件法(適用於 5.7+)

  1. 創建 C:\mysql-init.txt 內容:
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpass';
  2. 停止服務:net stop mysql
  3. 啟動:mysqld --init-file=C:\\mysql-init.txt --console
  4. 看到 "ready for connections" 後關閉窗口,正常啟動服務

關鍵避坑點

  • 必須用 --console:Windows 下無 --console 服務會在後台運行且無日誌輸出,難以判斷是否真正啟動
  • 5.7+ 密碼列改名:password → authentication_string
  • FLUSH PRIVILEGES 必不可少:否則修改不生效
  • 防火牆/殺毒軟件:可能攔截 3306 端口

總結

Windows 下重置 root 密碼核心在於:以 --console 方式啟動 --skip-grant-tables,確保服務真正運行在前台並可見日誌。切勿直接修改 password 列而不使用 PASSWORD() 函數。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved