萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 忘記 root 密碼恢復標準流程(通用版)

適用條件

  • 擁有作業系統 root/Administrator 權限
  • MySQL 所有版本通用(5.0~8.0)

標準恢復步驟

1. 停止 MySQL 服務

# Linux
kill `cat /var/lib/mysql/hostname.pid`  # 非 kill -9,優雅關閉
# 或
systemctl stop mysqld

# Windows
net stop mysql

2. 跳過權限表啟動

# 前台運行(調試用)
mysqld --skip-grant-tables --user=mysql &

# 或修改配置文件永久生效
# my.cnf / my.ini [mysqld] 區段加入
skip-grant-tables
# 然後 systemctl start mysqld

3. 免密登入並修改密碼

mysql -u root -p
# 密碼直接 Enter

mysql> USE mysql;

# MySQL 5.7.6+ / 8.0
mysql> UPDATE user SET authentication_string = PASSWORD('新密碼') WHERE User = 'root';

# MySQL 5.7.6 之前
mysql> UPDATE user SET Password = PASSWORD('新密碼') WHERE User = 'root';

mysql> FLUSH PRIVILEGES;
mysql> QUIT;

4. 恢復正常模式並驗證

# 移除 skip-grant-tables
# 重啟服務
systemctl restart mysqld

# 新密碼登入驗證
mysql -u root -p'新密碼' -e "SELECT VERSION();"

5.7+ 密碼過期強制重設處理

登入後若報 ERROR 1820: You must reset your password using ALTER USER:

ALTER USER 'root'@'localhost' IDENTIFIED BY '最終密碼';

若再報 ERROR 1819: password policy:

SET GLOBAL validate_password_policy = LOW;
SET GLOBAL validate_password_length = 6;
-- 然後重新 ALTER USER

Windows 環境快速步驟

  1. 管理員 CMD:net stop mysql
  2. mysqld --skip-grant-tables --console(保持視窗開啟)
  3. 新開 CMD:mysql -u root 免密進入
  4. 執行上述 UPDATE/FLUSH
  5. 關閉 --console 視窗,net start mysql

安全建議

  • 恢復後立即移除 skip-grant-tables
  • 建立專用運維帳號,禁用 root 遠程登入:UPDATE user SET Host='localhost' WHERE User='root';
  • 啟用密碼策略、定期輪換
  • 記錄操作日誌供審計
copyright © 萬盛學電腦網 all rights reserved