首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 忘記 Root 密碼?Linux/Windows 通用重置方案(含 --skip-grant-tables 實戰)

     編輯:MySQL 綜合教學

MySQL 忘記 Root 密碼?Linux/Windows 通用重置方案

忘記 MySQL root 密碼是資料庫管理常見困擾。重裝雖能解決但代價太大。核心原理是啟動時加入 --skip-grant-tables 參數,跳過權限表驗證,以免密碼登入修改密碼。本文提供 Linux 與 Windows 完整操作步驟。

核心原理

MySQL 啟動時載入權限表 (mysql.user 等) 進行身分驗證。--skip-grant-tables 告訴伺服器略過這步驟,允許任意使用者無密碼連線,但僅限本地連線(除非同時加入 --skip-networking)。

Linux 環境操作步驟

  1. 停止 MySQL 服務
    # systemd 系統
    systemctl stop mysqld
    # 或傳統 init.d
    service mysql stop
    # 或強制殺掉進程
    pkill mysqld
  2. 以跳過權限模式啟動
    # 方法一:修改設定檔 /etc/my.cnf [mysqld] 區段加入 skip-grant-tables,再啟動服務
    # 方法二:命令列直接啟動(推薦,臨時生效)
    mysqld_safe --skip-grant-tables --skip-networking &
  3. 免密碼登入修改密碼
    mysql -u root -p  # 直接按 Enter
    # 在 mysql 客戶端內執行:
    FLUSH PRIVILEGES;  -- 重要:重新載入權限表,否則 UPDATE 無效
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass123!';
    # 或舊版本:
    UPDATE mysql.user SET authentication_string=PASSWORD('NewPass123!') WHERE User='root';
    FLUSH PRIVILEGES;
    QUIT;
  4. 正常重啟服務
    # 停止 skip-grant-tables 模式的進程
    pkill mysqld
    # 移除 my.cnf 中的 skip-grant-tables(若有修改)
    # 正常啟動
    systemctl start mysqld

Windows 環境操作步驟

  1. 停止服務:net stop mysql 或「服務」管理工具中停止
  2. 以跳過權限模式啟動:
    # 在 CMD 中切換至 bin 目錄
    mysqld --skip-grant-tables --skip-networking

    視窗會保持開啟,不要關閉。

  3. 新開一個 CMD 視窗免密登入:
    mysql -u root -p  # 直接按 Enter
  4. 修改密碼並重啟:同 Linux 步驟 3-4,最後用 Ctrl+C 關閉第一個視窗,再 net start mysql。

關鍵注意事項

  • 必須執行 FLUSH PRIVILEGES:在 --skip-grant-tables 模式下,權限表不會自動重載,UPDATE 後必須手動執行
  • MySQL 5.7+ 密碼欄位改名:password 欄位改為 authentication_string
  • 安全性:務必加上 --skip-networking 防止遠程無授權存取;操作完成後立即移除參數並重啟
  • plugin 欄位:若使用 auth_socket 或 caching_sha2_password 插件,需同步更新 plugin 欄位

驗證新密碼

mysql -u root -p'NewPass123!' -e "SELECT 'Connection OK';"

掌握此技巧,再也不用因忘記密碼而煩惱重裝資料庫。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved