環境確認
# Linux 環境查看版本
rpm -qa | grep MySQL
# MySQL-server-5.6.15-1.el6.x86_64
# MySQL-client-5.6.15-1.el6.x86_64
# ...
Windows 環境重置流程
步驟 1:停止服務並清理殘留進程
- 服務管理器停止
MySQL56 服務。
- 任務管理器 → 詳細信息 → 結束所有
mysqld.exe、mysql.exe 進程。
步驟 2:以跳過權限模式啟動
# 1. 管理員身份打開 CMD
# 2. 切換至 bin 目錄(根據實際安裝路徑調整)
cd "D:\Program Files\MySQL\MySQL Server 5.6\bin"
# 3. 啟動跳過權限表
mysqld --skip-grant-tables
# 窗口將停留在運行狀態,**保持打開勿關閉**

步驟 3:新開窗口無密碼登入並修改密碼
# 新開管理員 CMD,同樣切換到 bin 目錄
cd "D:\Program Files\MySQL\MySQL Server 5.6\bin"
# 無密碼登入
mysql -u root -p
# 提示 Enter password: 直接回車
# 修改密碼(5.6 語法)
UPDATE mysql.user SET password = PASSWORD('NewRootPwd123!') WHERE User = 'root';
FLUSH PRIVILEGES;

步驟 4:重啟服務驗證
- 關閉
--skip-grant-tables 的 CMD 窗口(Ctrl+C)。
- 服務管理器重新啟動 MySQL 服務。
- 正常連接驗證:
mysql -u root -p'NewRootPwd123!'
Linux 環境快速版
systemctl stop mysqld
mysqld_safe --skip-grant-tables &
mysql -u root
UPDATE mysql.user SET authentication_string = PASSWORD('NewPwd') WHERE User='root';
FLUSH PRIVILEGES;
pkill mysqld
systemctl start mysqld
常見失敗原因
| 現象 | 原因 | 修正 |
| 修改密碼後仍無法登入 | 未執行 FLUSH PRIVILEGES | 必須刷新權限緩存 |
| --skip-grant-tables 啟動報錯 | 舊進程未殺乾淨/端口佔用 | taskkill /f /im mysqld.exe |
| Windows 服務啟動失敗 | 數據目錄權限/配置文件錯誤 | 查看 .err 日志定位具體錯誤 |
安全加固建議
- 密碼複雜度:≥12 位,含大小寫、數字、特殊符號。
- 禁止 root 遠程登入:
UPDATE mysql.user SET Host='localhost' WHERE User='root'; FLUSH PRIVILEGES;
- 啟用
validate_password 插件強制策略。
- 定期輪換密碼,記錄審計日志。