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

MySQL Root 密碼遺忘?5 分鐘跳過授權表重置密碼圖文教程

     編輯:MySQL 綜合教學

適用場景

  • Root 密碼遺失、遺忘
  • 權限表損壞導致無法登錄
  • 全新初始化實例需設置首個密碼

標準重置流程 (Linux/Windows 通用)

1. 停止 MySQL 服務

# Linux (systemd)
systemctl stop mysqld
# 或
service mysql stop

# Windows (管理員 CMD)
net stop mysql

2. 跳過授權表啟動 (關鍵步驟)

# Linux: 後台運行
mysqld_safe --skip-grant-tables &

# Windows: 新開管理員 CMD 窗口運行 (保持窗口不關閉)
mysqld --skip-grant-tables --console

⚠️ **此模式下無密碼可登錄,極度不安全,務必在內網/防火牆保護下操作,完成即關閉。**

3. 無密碼登錄並修改密碼

# 新終端登錄
mysql -u root

# 進入 MySQL 後執行 (5.7.6+ / 8.0 語法)
UPDATE mysql.user SET authentication_string = PASSWORD('NewPass123!') WHERE User = 'root';
FLUSH PRIVILEGES;
QUIT;

💡 **MySQL 5.7.6 前 / 部分 MariaDB 版本**:
`UPDATE mysql.user SET password = PASSWORD('NewPass123!') WHERE User = 'root';`

4. 正常重啟驗證

# 停止 --skip-grant-tables 進程 (Linux: kill / Ctrl+C; Windows: 關閉 CMD 窗口)
# 正常啟動
systemctl start mysqld
# 或 net start mysql

# 驗證新密碼
mysql -u root -p'NewPass123!'

Windows 圖解關鍵點

  1. **兩個 CMD 窗口**:窗口 1 運行 `mysqld --skip-grant-tables --console` **保持運行**;窗口 2 執行 `mysql -u root` 修改密碼。
  2. **無 `mysqld_safe`**:Windows 直接用 `mysqld`。
  3. **防火牆**:臨時關閉或僅允許本機 3306 端口。

避坑指南

  • 修改密碼後**必須** `FLUSH PRIVILEGES;` 刷新權限緩存。
  • MySQL 8.0 默認 `caching_sha2_password` 插件,若客戶端舊版不支援,需同步修改:
    `ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NewPass123!';`
  • 生產環境操作前**備份數據目錄** (`datadir`),防萬一。
  • 重置後**立即檢查**是否有匿名用戶、遠程 root 等安全隱患:
    `SELECT User, Host, plugin FROM mysql.user;`
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved