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

MySQL Root 密碼忘記?三種找回方案 + 三種修改姿勢,全版本通用

     編輯:MySQL 綜合教學

Root 密碼遺失是 DBA 必經之痛。本文提供三種找回方案(跳過授權表、配置文件法、init-file 法)與三種修改姿勢,覆蓋 MySQL 5.6~8.0、Linux/Windows 全場景。

方案一:跳過授權表啟動(經典通用)

# 1. 停止服務
systemctl stop mysqld

# 2. 跳過授權表啟動
mysqld_safe --skip-grant-tables --skip-networking &

# 3. 無密登入並修改
mysql -u root
FLUSH PRIVILEGES;  -- 5.7+ 必須先執行
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass123!';  -- 5.7.6+/8.0
-- 或舊版:UPDATE mysql.user SET authentication_string=PASSWORD('NewPass123!') WHERE User='root';
FLUSH PRIVILEGES;
EXIT;

# 4. 正常重啟
systemctl restart mysqld

關鍵點:--skip-networking 防止外部連入風險窗口;5.7+ 必須 FLUSH PRIVILEGES 後才能改密碼。

方案二:配置文件法(適合不想手動啟動進程)

[mysqld]
skip-grant-tables

加入 /etc/my.cnf,重啟服務,同方案一步驟 3 修改密碼,最後刪除該行並重啟。

方案三:init-file 法(MySQL 8.0 推薦,無需交互)

# 1. 建立初始化腳本 /tmp/init_root.sql
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass123!';

# 2. 啟動時載入
mysqld --init-file=/tmp/init_root.sql --user=mysql &

# 3. 見日誌顯示 "ready for connections" 後殺掉進程,正常重啟

優勢:全自動化、無交互視窗、適合 Ansible/Docker 入口腳本。

三種日常修改密碼姿勢(已知舊密碼)

方法命令適用場景
mysqladminmysqladmin -u root -p'old' password 'new'命令列快速改密,脚本友好
ALTER USERALTER USER 'root'@'localhost' IDENTIFIED BY 'new';5.7.6+ 標準 SQL,支援密碼策略驗證
SET PASSWORDSET PASSWORD FOR 'root'@'localhost' = 'new';8.0 推薦,會話級立即生效

避坑清單

  • 密碼策略:validate_password.policy 可能要求長度/特殊字符,新密碼需達標。
  • Plugin 差異:8.0 預設 caching_sha2_password,舊客戶端需改 mysql_native_password 或升級驅動。
  • 主從同步:主庫改密後,從庫 CHANGE MASTER TO MASTER_PASSWORD='new' 並 START SLAVE。

建議將找回腳本納入運行手冊,季度演練一次,真正出事時才不會手忙腳亂。

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