萬盛學電腦網

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

MySQL 忘記 root 密碼強制修改:--skip-grant-tables 臨時繞過認證的標準流程

適用場景

  • Root 密碼遺失、過期、被惡意篡改。
  • 需在**擁有服務器作業系統權限**的前提下操作(物理機、VM、容器 root)。

標準流程(通用 Linux/MySQL 5.7+)

  1. 編輯配置文件添加跳過授權參數:
    
    # /etc/my.cnf 或 /etc/mysql/my.cnf
    [mysqld]
    skip-grant-tables
    # 可選:skip-networking 禁止遠程連接進入無授權模式
    
  2. 重啟 MySQL 服務:
    
    systemctl restart mysqld
    
  3. 無密碼登錄並修改密碼:
    
    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;
    
  4. 移除配置並重啟恢復正常認證:
    
    # 註釋或刪除 skip-grant-tables
    systemctl restart mysqld
    # 驗證新密碼
    mysql -u root -p'NewStrongPass123!'
    

關鍵細節提示

  • FLUSH PRIVILEGES 在 skip-grant-tables 模式下**必須執行兩次**:修改前刷新權限表使其可寫,修改後刷新使新密碼生效。
  • MySQL 8.0 authentication_string 列存儲雜湊值,ALTER USER 自動處理加密,無需手動 PASSWORD()。
  • skip-networking 防止重置窗口期被外部惡意連接,安全加分項。
  • 若有多個 root 賬號(root@%, root@127.0.0.1, root@::1),建議**全部同步修改密碼**,避免殘留弱口令。

Windows 環境操作差異

  1. 以管理員身份打開命令提示符。
  2. 停止服務:net stop mysql 或 sc stop MySQL80。
  3. 啟動跳過授權:"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld" --skip-grant-tables --console(新窗口保持運行)。
  4. 另開窗口:mysql -u root → 執行上述 FLUSH PRIVILEGES; ALTER USER...。
  5. 關閉 --skip-grant-tables 窗口 (Ctrl+C),正常啟動服務:net start mysql。

事後安全加固清單

  1. 設置高強度密碼(≥20 字符,多字符集)。
  2. 禁用 root 遠程登錄:UPDATE mysql.user SET Host='localhost' WHERE User='root'; FLUSH PRIVILEGES;。
  3. 創建業務專用賬號,最小權限(GRANT SELECT,INSERT,UPDATE,DELETE ON db.* TO 'app'@'%' IDENTIFIED BY '...';)。
  4. 啟用密碼過期策略:ALTER USER 'root'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;。
  5. 配置審計日誌:audit_log 插件記錄所有登錄嘗試與 DDL/DML。
  6. 將密碼存入密碼管理器(Bitwarden/1Password/KeePass),禁用明文存儲。

總結

--skip-grant-tables 是 MySQL 官方提供的緊急繞過認證機制,**僅限擁有 OS 權限的合法管理員使用**。操作核心:改配置 → 重啟 → 免密登錄 → FLUSH PRIVILEGES → ALTER USER → FLUSH PRIVILEGES → 恢復配置 → 重啟 → 驗證。全程 2 分鐘,配合事後加固,徹底消除弱口令風險。

copyright © 萬盛學電腦網 all rights reserved