適用場景
- 忘記 Root 密碼無法登錄
- 需要定期輪換 Root 密碼
- 安全審計要求重置默認密碼
通用重置流程(四步法)
步驟 1:修改配置文件啟用跳過授權表
| 系統 | 配置文件路徑 | 修改內容 |
| Windows | %mysql_installdir%\my.ini | 在 [mysqld] 區塊添加 skip-grant-tables |
| Linux | /etc/my.cnf | 在 [mysqld] 區塊添加 skip-grant-tables |
步驟 2:重啟 MySQL 服務
# Windows
net stop mysql
net start mysql
# Linux (SysVinit)
/etc/init.d/mysqld restart
# Linux (Systemd)
systemctl restart mysqld
步驟 3:無密碼登錄並更新密碼
mysql -uroot -p mysql
# 直接回車,無需密碼進入
# 更新密碼(MySQL 5.7+ 使用 authentication_string)
UPDATE user SET authentication_string=PASSWORD('NewPass123!') WHERE user='root';
# 或舊版本
UPDATE user SET password=PASSWORD('NewPass123!') WHERE user='root';
FLUSH PRIVILEGES;
QUIT;
步驟 4:還原配置並重啟服務
- 刪除配置文件中的
skip-grant-tables
- 重啟 MySQL 服務
- 使用新密碼驗證登錄
安全加固建議
- 密碼策略:長度 ≥12 位,包含大小寫、數字、特殊字符
- 禁用 Root 遠程登錄:
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
- 創建專用應用賬戶,最小權限原則
- 啟用密碼過期策略:
ALTER USER 'root'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;
常見問題排查
- 報錯「Table 'mysql.user' doesn't exist」
- 數據目錄損壞或未初始化,需重新運行
mysql_install_db
- 密碼修改不生效
- 確認已執行
FLUSH PRIVILEGES 且配置文件已還原重啟
- Windows 服務無法啟動
- 檢查事件查看器,常見為端口衝突或配置語法錯誤