首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL root 密碼忘記/丟失:跳過授權表啟動重置密碼標準流程

     編輯:MySQL 資料庫相關知識

適用場景

  • Root 密碼遺忘、遺失、交接未留存。
  • 無其他具備 SUPER 權限的賬號可登錄修改。

標準重置步驟

  1. 停止 MySQL 服務
    systemctl stop mysqld
    # 或
    service mysqld stop
    # 或強制
    killall -TERM mysqld
  2. 以跳過授權表模式啟動
    /usr/bin/mysqld_safe --skip-grant-tables --skip-networking &
    • --skip-grant-tables:不載入權限表,任意用戶無密碼可登錄,**極度危險**,**必須配合 --skip-networking 禁用網絡監聽**,防止外部入侵。
    • 路徑請根據實際安裝位置調整(which mysqld_safe)。
  3. 無密碼登錄並修改密碼
    mysql -u root
    -- 進入 mysql> 提示符
    USE mysql;
    UPDATE user SET authentication_string = PASSWORD('新密碼') WHERE User = 'root';
    -- MySQL 5.7+ 字段為 authentication_string,5.6 為 password
    FLUSH PRIVILEGES;
    EXIT;
  4. 重啟 MySQL 正常模式
    # 關閉 --skip-grant-tables 進程
    killall mysqld
    # 正常啟動
    systemctl start mysqld
  5. 驗證新密碼
    mysql -h localhost -u root -p
    # 輸入新密碼登錄成功

MySQL 8.0 注意事項

  • PASSWORD() 函數已移除,直接設置哈希值或使用 ALTER USER(但需授權表載入)。
  • 推薦 8.0 下仍用 UPDATE user SET authentication_string = '' WHERE User='root'; FLUSH PRIVILEGES; 置空密碼,正常啟動後再 ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpwd';。

安全警示

--skip-grant-tables 期間任何本地用戶均可無密碼登錄為 root。生產環境操作前請:

  1. 確保 --skip-networking 生效。
  2. 臨時調整防火牆僅允許管理員 IP。
  3. 操作完成後立即恢復正常模式。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved