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

MySQL Root 密碼遺失緊急重置:--skip-grant-tables 免密登入修改流程

     編輯:MySQL 資料庫相關知識

適用場景

忘記 Root 密碼、無其他管理帳號可登入。

操作步驟

  1. 停止 MySQL 服務:
    Windows: net stop mysql / Linux: systemctl stop mysqld
  2. 以跳過權限表模式啟動:
    mysqld_safe --skip-grant-tables &
    Windows 直接執行:mysqld --skip-grant-tables(需另開視窗)
  3. 免密登入:
    mysql -u root
    直接進入 mysql> 提示符,無需密碼。
  4. 修改密碼:
    UPDATE mysql.user SET Password=PASSWORD('NewStrongPassword') WHERE User='root';
    FLUSH PRIVILEGES;
    QUIT;
  5. 正常重啟服務:
    殺掉 --skip-grant-tables 進程,正常啟動:
    Windows: net start mysql / Linux: systemctl start mysqld
  6. 驗證新密碼:
    mysql -u root -p'NewStrongPassword'

原理

--skip-grant-tables 使 mysqld **不載入授權表**,所有連線直接擁有超級權限,繞過密碼驗證。修改完 mysql.user 表後,FLUSH PRIVILEGES 重新載入授權緩存,新密碼即時生效。

安全警示

  • **啟動期間任何人可免密登入獲取最高權限**,請在內網/維護窗口操作,並在修改完成後**立即正常重啟**。
  • 生產環境建議配置 bind-address=127.0.0.1 限制本機訪問,或防火牆臨時封鎖 3306 埠。

MySQL 5.7+ / 8.0 語法差異

-- 5.7
UPDATE mysql.user SET authentication_string=PASSWORD('newpass') WHERE User='root';

-- 8.0 (caching_sha2_password)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpass';

若 UPDATE 方式無效,嘗試版本對應語句。

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