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

MySQL 5.6 忘記 Root 密碼重置實戰:skip-grant-tables 模式完整操作流程

     編輯:MySQL 資料庫相關知識

適用場景

  • MySQL 5.6 系列(5.7+ 流程略有不同,參考專門文章)
  • Root 密碼遺失、無其他超級賬戶可登錄
  • Linux 環境(Windows 類似,命令行差異見文末)

完整操作步驟

1. 確認版本與停止服務

# 查看版本
rpm -qa | grep -i mysql
# MySQL-server-5.6.xx

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

2. 啟動跳過授權表模式

# 後台啟動,跳過權限檢查
mysqld_safe --skip-grant-tables &

# 等待幾秒確認啟動成功
# 日志提示:mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

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

# 直接登錄(無需密碼)
mysql

# 進入 mysql 系統庫
USE mysql;

# 修改 root 密碼(5.6 語法:Password 列)
UPDATE user SET Password=PASSWORD('NewStrongP@ss123') WHERE User='root';

# 刷新權限(關鍵!否則不生效)
FLUSH PRIVILEGES;

# 退出
EXIT;

4. 重啟正常服務

# 停止 skip-grant-tables 進程
# 找到 PID
ps aux | grep mysqld
kill -TERM 

# 或使用 service 停止(若註冊了服務)
service mysql stop

# 正常啟動
service mysql start

5. 驗證新密碼並完成初始化

# 使用新密碼登錄
mysql -u root -p'NewStrongP@ss123'

# 5.6.10+ 可能要求重置密碼(密碼過期機制)
SET PASSWORD = PASSWORD('NewStrongP@ss123');

# 驗證權限
SHOW DATABASES;

Windows 環境差異

# 1. 停止服務
net stop mysql

# 2. 管理員 CMD 進入 bin 目錄
cd C:\Program Files\MySQL\MySQL Server 5.6\bin

# 3. 啟動跳過授權
mysqld --skip-grant-tables --console
# 新開一個 CMD 窗口執行後續操作

# 4. 修改密碼同 Linux

# 5. 關閉跳過授權窗口 (Ctrl+C),正常啟動服務
net start mysql

避坑指南

問題原因解決
mysqld_safe 無法啟動殘留進程 / data 目錄權限 / 配置錯誤kill 所有 mysqld、chown mysql:mysql /var/lib/mysql、檢查 my.cnf
UPDATE 影響 0 行root 賬戶 Host 不匹配(如 'root'@'127.0.0.1')WHERE User='root' AND Host='%' / 具體 Host
FLUSH PRIVILEGES 報錯skip-grant-tables 下部分權限操作受限重啟正常服務後再 FLUSH
登錄提示 ERROR 1820密碼標記為過期SET PASSWORD = PASSWORD('...') 重置
Windows 下 --console 窗口關閉導致服務停止前台運行特性用 --install 安裝服務模式,或保持窗口開啟

安全加固建議(重置後必做)

  1. 刪除匿名用戶:DROP USER ''@'localhost';
  2. 禁止 Root 遠程登錄:DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost','127.0.0.1','::1'); FLUSH PRIVILEGES;
  3. 刪除 test 庫:DROP DATABASE test;
  4. 創建業務專用賬戶,最小權限原則
  5. 啟用 validate_password 插件(參考本系列密碼策略篇)
  6. 配置 SSL 加密傳輸

密碼重置是運維基本功,**熟練掌握 skip-grant-tables 流程,並在重置後立即完成安全基線加固**,才是專業 DBA 的標準動作。

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