遺忘 MySQL root 密碼的通用重置方案,涵蓋 Windows 平台 --init-file 法、Linux/Unix 平台 --skip-grant-tables 法、通用客戶端交互法,並給出重置後安全加固清單。
net stop mysql / 任務管理器殺進程C:\mysql-init.txt:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass123!';
"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe" --init-file=C:\mysql-init.txt --console
若為 MSI 安裝的服務,需在服務屬性「啟動參數」追加 --init-file=C:\mysql-init.txt 後重啟服務
mysql -uroot -p'NewStrongPass123!' -e "SELECT VERSION();".pid 文件(/var/lib/mysql/、/var/run/mysqld/、/usr/local/mysql/data/),殺掉進程:
kill $(cat /var/lib/mysql/hostname.pid)
~/mysql-init:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass123!';
mysqld_safe --init-file=~/mysql-init --skip-grant-tables --skip-networking &
~/mysql-init,正常重啟服務:systemctl restart mysql
# 1. 進入 mysql 客戶端(若正常密碼失效,先按上述 skip-grant-tables 啟動)
mysql -uroot -p
# 2. 執行更新
UPDATE mysql.user SET authentication_string=PASSWORD('NewPass123!') WHERE User='root';
FLUSH PRIVILEGES;
# 3. 退出並正常重啟服務(若用了 skip-grant-tables)
# 4. 驗證新密碼
mysql_secure_installation
# 依次執行:
# - 設置/確認 root 強密碼
# - 移除匿名用戶
# - 禁止 root 遠程登錄
# - 刪除 test 數據庫
# - 重新載入權限表
| 版本 | 密碼列 | 更新語法 |
|---|---|---|
| MySQL 5.6 / 5.7 | authentication_string (5.7) / Password (5.6) | ALTER USER 'root'@'localhost' IDENTIFIED BY 'pass'; (5.7.6+) |
| MySQL 8.0 | authentication_string | ALTER USER 'root'@'localhost' IDENTIFIED BY 'pass'; (默認 caching_sha2_password) |
| MariaDB 10.2+ | Password | ALTER USER 'root'@'localhost' IDENTIFIED BY 'pass'; |
按平台選擇對應流程,5 分鐘內完成重置。將此指南納入運維手冊,定期演練。