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

Windows MySQL 8.0/5.7 忘記 root 密碼重置圖文教程(跳過授權表啟動法)

     編輯:MySQL 資料庫相關知識

Windows 環境下 MySQL root 密碼遺失是高頻運維場景。本文提供經實測的「跳過授權表啟動 → 空密碼登錄 → 更新密碼 → 刷新權限 → 正常重啟」標準流程,兼容 MySQL 5.7/8.0,附路徑含空格處理、常見報錯排查。

環境信息

  • OS:Windows 10/11 / Server 2016/2019
  • MySQL:5.7 / 8.0 (安裝路徑含空格:D:\Program Files\MySQL\MySQL Server 8.0\)

重置步驟 (5 分鐘搞定)

1. 打開 CMD 進入 MySQL bin 目錄

D:
cd "D:\Program Files\MySQL\MySQL Server 8.0\bin"
# 雙引號包裹含空格路徑,關鍵!

2. 以 --skip-grant-tables 啟動實例 (窗口 1 保持開啟)

mysqld --console --skip-grant-tables --shared-memory
# --console 前台輸出日誌,便於觀察
# --shared-memory 避免端口衝突 (可選)
# 看到 "ready for connections" 即成功

⚠️ MySQL 8.0 必須加 --shared-memory 或指定 --port,否則默認端口被佔用會啟動失敗。

3. 新開 CMD 窗口 (窗口 2) 空密碼登錄

D:
cd "D:\Program Files\MySQL\MySQL Server 8.0\bin"
mysql -u root -p
# 提示 Enter password: 直接按 Enter (空密碼)

4. 更新 root 密碼 (SQL 區分版本)

MySQL 5.7:

UPDATE mysql.user SET authentication_string = PASSWORD('NewStrongPass123') WHERE User = 'root';
FLUSH PRIVILEGES;

MySQL 8.0: (密碼列改為 authentication_string,採用 caching_sha2_password)

ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass123';
FLUSH PRIVILEGES;

5. 關閉窗口 1 (Ctrl+C 停止 --skip-grant-tables 實例)

6. 正常啟動 MySQL 服務並驗證

# 方式一:服務管理器
services.msc → MySQL80 → 右鍵啟動

# 方式二:命令行 (需管理員權限)
net start MySQL80

# 驗證
mysql -u root -p
# 輸入新密碼 NewStrongPass123 登錄成功

常見坑點排查表

現象原因解決
ERROR 1045 (28000): Access denied 即使用 --skip-grant-tables未加 --shared-memory 導致端口衝突,實際連上舊實例加 --shared-memory 或 --port=3307 區分端口
Unknown column 'password' (5.7/8.0 更新語句報錯)密碼列名變更:5.7 authentication_string、8.0 建議用 ALTER USER用版本對應 SQL,見上文
路徑含空格 cd 失效未加雙引號cd "D:\Program Files\MySQL\MySQL Server 8.0\bin"
重置後仍報 1045未 FLUSH PRIVILEGES 或未重啟正常服務執行 FLUSH PRIVILEGES → 關閉臨時實例 → net start 正常服務

總結口訣

進 bin 目錄、雙引號路徑、skip-grant-tables 加 shared-memory、新窗口空密碼登、ALTER USER 改密碼、FLUSH PRIVILEGES、關臨時啟正常、驗證新密碼。收藏備用,關鍵時刻救命。

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