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

MySQL Root密碼重置三步走:Skip-Grant-Tables急救指南

     編輯:MySQL 綜合教學

遺忘Root密碼是資料庫運維常見急救場景。本文提供標準化skip-grant-tables繞過權限驗證重置密碼流程,涵蓋Windows/Linux雙平台、MySQL 5.7+認證插件變更應對、安全復原與驗證全過程。

核心原理

skip-grant-tables啟動時跳過權限表載入,允許無密碼以Root身份連接,進而直接更新mysql.user表重置密碼。

標準化重置流程

步驟1:修改配置文件啟用skip-grant-tables

平台配置文件路徑
Windows%MYSQL_INSTALL_DIR%\my.ini (通常在安裝目錄)
Linux/etc/my.cnf 或 /etc/mysql/my.cnf

在[mysqld]區段添加:

skip-grant-tables

保存退出。

步驟2:重啟MySQL服務

平台命令
Windowsnet stop mysql → net start mysql
Linux (Systemd)systemctl restart mysqld
Linux (SysV)/etc/init.d/mysqld restart

步驟3:無密碼登入並重置密碼

mysql -u root -p
# 密碼提示直接回車(空密碼)

-- MySQL 5.7.6+ (authentication_string 欄位)
UPDATE mysql.user SET authentication_string=PASSWORD('NewP@ssw0rd') WHERE User='root';
FLUSH PRIVILEGES;

-- MySQL 5.7.6- / 5.6 / 5.5 (password 欄位)
UPDATE mysql.user SET password=PASSWORD('NewP@ssw0rd') WHERE User='root';
FLUSH PRIVILEGES;

-- MySQL 8.0+ (caching_sha2_password 插件)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewP@ssw0rd';
FLUSH PRIVILEGES;

⚠️ 版本差異關鍵:5.7.6引入authentication_string替代password,8.0預設caching_sha2_password需用ALTER USER。

步驟4:復原配置並重啟驗證

  1. 編輯配置文件,**刪除**skip-grant-tables行
  2. 重啟MySQL服務
  3. 新密碼驗證:mysql -u root -p'NewP@ssw0rd' -e "SELECT 1;"

安全加固同步執行

-- 清理匿名用戶
DELETE FROM mysql.user WHERE User='';
-- 禁止Root遠程登入 (僅本機)
UPDATE mysql.user SET Host='localhost' WHERE User='root';
-- 刪除test庫權限
DELETE FROM mysql.db WHERE Db='test' OR Db='test_%';
FLUSH PRIVILEGES;

Windows 特殊情況:服務名不確定

sc query state=all | findstr mysql
# 找到服務名,如 MySQL57
net stop MySQL57
net start MySQL57

Linux 特殊情況:systemd 服務覆蓋

若systemctl restart mysqld未生效配置變更,檢查systemctl cat mysqld中EnvironmentFile指向的配置文件是否正確。

驗證清單

  1. 新密碼可登入
  2. SHOW VARIABLES LIKE 'validate_password%';確認密碼策略
  3. 應用連接池測試通過
  4. 配置文件無skip-grant-tables殘留

預防措施

  • 密碼管理器存儲(Bitwarden/1Password/Keepass)
  • 自動化部署注入密碼(Ansible Vault/Sealed Secrets)
  • 定期輪換並記錄變更日誌

標準化三步走流程,配合版本差異處理與安全同步加固,讓Root密碼遺忘從「恐慌事件」變為「標準操作」。

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