# /etc/my.cnf 或 /etc/mysql/my.cnf
[mysqld]
skip-grant-tables
# 可選:skip-networking 禁止遠程連接進入無授權模式
systemctl restart mysqld
mysql -u root
# 進入 mysql> 交互模式
FLUSH PRIVILEGES; -- 必須先執行,使 grant 表可寫
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass123!';
-- 5.7.6+ 推薦 ALTER USER;5.6 用:
-- UPDATE mysql.user SET authentication_string=PASSWORD('NewStrongPass123!') WHERE User='root' AND Host='localhost';
FLUSH PRIVILEGES;
EXIT;
# 註釋或刪除 skip-grant-tables
systemctl restart mysqld
# 驗證新密碼
mysql -u root -p'NewStrongPass123!'
FLUSH PRIVILEGES 在 skip-grant-tables 模式下**必須執行兩次**:修改前刷新權限表使其可寫,修改後刷新使新密碼生效。authentication_string 列存儲雜湊值,ALTER USER 自動處理加密,無需手動 PASSWORD()。skip-networking 防止重置窗口期被外部惡意連接,安全加分項。root@%, root@127.0.0.1, root@::1),建議**全部同步修改密碼**,避免殘留弱口令。net stop mysql 或 sc stop MySQL80。"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld" --skip-grant-tables --console(新窗口保持運行)。mysql -u root → 執行上述 FLUSH PRIVILEGES; ALTER USER...。net start mysql。UPDATE mysql.user SET Host='localhost' WHERE User='root'; FLUSH PRIVILEGES;。GRANT SELECT,INSERT,UPDATE,DELETE ON db.* TO 'app'@'%' IDENTIFIED BY '...';)。ALTER USER 'root'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;。audit_log 插件記錄所有登錄嘗試與 DDL/DML。--skip-grant-tables 是 MySQL 官方提供的緊急繞過認證機制,**僅限擁有 OS 權限的合法管理員使用**。操作核心:改配置 → 重啟 → 免密登錄 → FLUSH PRIVILEGES → ALTER USER → FLUSH PRIVILEGES → 恢復配置 → 重啟 → 驗證。全程 2 分鐘,配合事後加固,徹底消除弱口令風險。