萬盛學電腦網

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

MySQL 5.7 忘記 root 密碼重置完整指南(含密碼策略處理)

適用場景

MySQL 5.7+ 版本,Linux/macOS/Windows(路徑調整),拥有伺服器 root/Administrator 權限。

標準重置流程

1. 修改配置跳過權限驗證

vim /etc/my.cnf
# 在 [mysqld] 區段加入
skip-grant-tables

2. 重啟 MySQL 服務

systemctl restart mysqld
# 或 service mysqld restart

3. 免密登入

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

4. 更新認證字串(5.7 移除 password 欄位)

USE mysql;
UPDATE user SET authentication_string = PASSWORD('新密碼') WHERE User = 'root';
FLUSH PRIVILEGES;
QUIT;

5. 恢復配置並重啟

vim /etc/my.cnf
# 刪除或註解 skip-grant-tables
systemctl restart mysqld

6. 新密碼登入並強制重設(5.7 安全機制)

mysql -u root -p
# 輸入新密碼

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

密碼策略錯誤處理 (ERROR 1819)

若報 Your password does not satisfy the current policy requirements:

SET GLOBAL validate_password_policy = 0;        -- 低強度策略
SET GLOBAL validate_password_length = 4;        -- 最小長度
SET GLOBAL validate_password_mixed_case_count = 0;
SET GLOBAL validate_password_number_count = 0;
SET GLOBAL validate_password_special_char_count = 0;

-- 然後重新執行 ALTER USER

或直接設定符合預設策略的複雜密碼(大小寫+數字+特殊字元+長度≥8)。

字符集檢查與配置

SHOW VARIABLES LIKE '%character%';

建議配置 /etc/my.cnf:

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci

[client]
default-character-set = utf8mb4

Windows 環境調整

  • 配置檔:my.ini(通常在安裝目錄或 C:\ProgramData\MySQL\MySQL Server 5.7\)
  • 服務管理:net stop mysql / net start mysql
  • 初始化:mysqld --initialize-insecure(生成臨時密碼在 .err 日誌)

安全建議

  • 重置後立即移除 skip-grant-tables
  • 建立專用應用帳號,限制主機、權限,禁用 root 遠程登入
  • 啟用 validate_password 元件並設定適當策略
  • 定期輪換密碼
copyright © 萬盛學電腦網 all rights reserved