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

MySQL 忘記 root 密碼?skip-grant-tables 免密重置全流程

     編輯:MySQL 綜合教學

遺忘 MySQL root 密碼是經典運維場景。利用 skip-grant-tables 跳過權限驗證,免密登入修改密碼,是最通用的重置方案。本文提供 Windows/Linux 完整操作步驟與事後清理清單。

核心原理

  • skip-grant-tables 使 mysqld 啟動時不載入授權表,所有連線無需密碼、擁有最高權限。
  • 屬於緊急維護模式,修改完成後必須移除並重啟,否則資料庫裸奔。

Windows 環境操作步驟

  1. 停止服務:net stop mysql 或服務管理器停止
  2. 編輯 my.ini:在 [mysqld] 區段加入 skip-grant-tables
    
    [mysqld]
    port=3306
    skip-grant-tables
    
  3. 啟動服務:net start mysql
  4. 免密登入:mysql -u root (直接 Enter,無需密碼)
  5. 修改密碼:
    
    mysql> USE mysql;
    mysql> UPDATE user SET authentication_string=PASSWORD('NewPass123!') WHERE User='root';
    -- MySQL 5.7+ 用 authentication_string,5.6 用 Password
    mysql> FLUSH PRIVILEGES;
    mysql> EXIT;
    
  6. 移除 skip-grant-tables 並重啟:
    • 編輯 my.ini 刪除/註釋該行
    • net stop mysql && net start mysql
  7. 驗證新密碼:mysql -u root -p'NewPass123!'

Linux 環境操作步驟


# 1. 停止服務
systemctl stop mysqld
# 或 service mysql stop

# 2. 編輯配置
vi /etc/my.cnf
# [mysqld] 區段加入
skip-grant-tables

# 3. 啟動服務
systemctl start mysqld

# 4. 免密登入修改密碼
mysql -u root
# 同 Windows 步驟 5

# 5. 移除配置重啟
vi /etc/my.cnf  # 刪除 skip-grant-tables
systemctl restart mysqld

MySQL 8.0+ 特殊處理

MySQL 8.0 移除 PASSWORD() 函數,密碼修改語法:


ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass123!';
-- 或
UPDATE mysql.user SET authentication_string='' WHERE User='root';
FLUSH PRIVILEGES;
-- 然後正常登入後再 ALTER USER 設定密碼

事後安全清理清單(必做)

  1. [ ] 確認 skip-grant-tables 已從配置移除
  2. [ ] 服務已正常重啟(需密碼登入)
  3. [ ] 刪除匿名帳號:DELETE FROM mysql.user WHERE User='';
  4. [ ] 禁止 root 遠端登入:DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost','127.0.0.1','::1');
  5. [ ] 設定強密碼策略:VALIDATE_PASSWORD 元件
  6. [ ] 記錄操作日誌,納入審計

替代方案(不停機、無配置修改)

若有其他管理帳號(如 admin)可登入:


mysql -u admin -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass123!';

skip-grant-tables 是把雙刃劍,用對是救命稻草,用錯是安全漏洞。**操作快、清理徹、記錄全** 是鐵律。

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