首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL Root 密碼忘記重置全平台指南:Linux 免權限表啟動、Windows 註冊表修改

     編輯:MySQL 綜合教學

核心原理:跳過權限表驗證 (--skip-grant-tables)

MySQL 權限驗證依賴 mysql.user 等系統表。啟動參數 --skip-grant-tables 使服務器不載入權限表,任何用戶無密碼即可連線並擁有所有權限,從而重置密碼。

Linux 平台標準流程

1. 停止 MySQL 服務

## 方法 A: 直接前台運行 (調試方便)
mysqld_safe --skip-grant-tables --skip-networking &

## 方法 B: 修改配置文件永久生效 (需重啟)
# /etc/my.cnf
[mysqld]
skip-grant-tables
skip-networking
# systemctl restart mysqld

## 關鍵參數:
# --skip-grant-tables: 跳過權限表
# --skip-networking: 禁用網絡連接 (安全,防止外部無密碼訪問)

3. 無密碼登入並重置密碼

## 停止跳過權限模式實例
pkill -9 mysqld

## 移除配置文件中的 skip-grant-tables (如修改過)
# 重啟正常服務
systemctl start mysqld

## 驗證新密碼
mysql -uroot -p'NewStrongPass123!' -e "SELECT VERSION();"

Windows 平台標準流程

1. 停止服務

## 管理員 CMD
cd /d D:\MySQL\mysql-5.6.29\bin
mysqld --skip-grant-tables --skip-networking --console

3. 新開 CMD 窗口重置密碼

## 關閉 --console 窗口 (Ctrl+C)
net start MySQL56
mysql -uroot -pNewStrongPass123!

特殊場景處理

1. MySQL 8.0 密碼策略導致設置失敗

## 指定配置文件與數據目錄
mysqld_safe --defaults-file=/data/mysql3306/my.cnf --skip-grant-tables --skip-networking --datadir=/data/mysql3306/data &

3. Docker 容器內重置

  
    風險說明防範
  
  
    無密碼全權限訪問--skip-grant-tables 期間任何人可連線操作必加 --skip-networking、限制本地 Unix Socket、盡快結束
    權限表損壞手動 UPDATE 可能導致權限不一致優先用 ALTER USER / SET PASSWORD,最後才直改表
    複製環境破壞主庫重置密碼後從庫同步失敗主從同步重置、或從庫同步修改
    應用連線中斷應用配置舊密碼導致報錯協調應用端同步修改配置、重啟
  


預防性措施

  1. 密碼管理器存儲:1Password、Bitwarden、KeePass 等
  2. 定期輪換機制:自動化腳本 + 通知
  3. 備用管理員賬號:建立 admin@localhost 高權限備用賬號
  4. 文檔記錄:運行手冊記錄重置流程、聯繫人

總結

MySQL Root 密碼重置核心:停服務 → --skip-grant-tables --skip-networking 啟動 → 無密登入 → ALTER USER/UPDATE user 設置新密 → 重啟正常模式驗證。關鍵安全點:**必須加 --skip-networking 禁用網絡**,防止重置窗口期被惡意利用。生產環境操作需納入變更管理流程,雙人複核、記錄審計。

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