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

忘記 MySQL root 密碼?5 步快速重置找回權限

     編輯:MySQL 資料庫相關知識

遺忘 MySQL root 密碼是常見運維場景,通過跳過權限表啟動實例可快速重置。本文提供標準化操作流程。

適用場景

  • root 密碼遺忘或遺失
  • 權限表損壞導致無法認證
  • 初始化實例後未記錄隨機密碼

標準重置流程(5 步)

步驟 1:停止 MySQL 服務

# Systemd 系統
systemctl stop mysqld
# 或 SysVinit
service mysql stop
# 確認進程已終止
ps -ef | grep mysqld

步驟 2:跳過權限表啟動

# 前台運行(調試用)
mysqld --skip-grant-tables --skip-networking &

# 或修改配置文件永久生效(my.cnf)
[mysqld]
skip-grant-tables
skip-networking  # 安全建議:禁用網絡連接
# 然後正常啟動服務
systemctl start mysqld

關鍵參數說明:

  • --skip-grant-tables:跳過權限驗證,允許無密碼登錄
  • --skip-networking:僅允許本地 Unix Socket 連接,防止外部未授權訪問

步驟 3:無密碼登錄並修改密碼

mysql -uroot
# 進入 MySQL Shell 後執行:
FLUSH PRIVILEGES;  -- 必須先執行,重新載入授權表

-- MySQL 5.7.6+ / 8.0 推薦語法
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass123!';

-- MySQL 5.7.6 之前
UPDATE mysql.user SET authentication_string=PASSWORD('NewStrongPass123!') WHERE User='root' AND Host='localhost';
FLUSH PRIVILEGES;

步驟 4:關閉臨時實例

# 若前台運行
mysqladmin -uroot shutdown
# 若配置文件修改
systemctl stop mysqld

步驟 5:恢復正常模式啟動

# 移除配置文件中的 skip-grant-tables
# 重啟服務
systemctl start mysqld
# 驗證新密碼
mysql -uroot -p'NewStrongPass123!' -e "SELECT VERSION();"

安全加固建議

  1. 新密碼符合複雜度策略:≥12 位、大小寫、數字、特殊字符
  2. 禁止 root 遠程登錄:UPDATE mysql.user SET Host='localhost' WHERE User='root';
  3. 建立專用業務賬號,最小權限原則
  4. 定期輪換密碼,使用密碼管理工具存儲
  5. 啟用 validate_password 插件強制密碼策略

常見問題排查

現象原因解決
ERROR 1290 (HY000)未執行 FLUSH PRIVILEGES修改密碼前必須先 FLUSH PRIVILEGES
密碼不生效權限表緩存執行 FLUSH PRIVILEGES 或重啟服務
無法啟動 --skip-grant-tables權限/目錄問題檢查 datadir 權限、錯誤日志、SELinux

掌握標準重置流程,配合密碼管理規範,可將密碼遺忘風險降至最低。

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