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

忘記 MySQL Root 密碼?跳過授權表緊急重置全流程 (Windows/Linux 通用)

     編輯:MySQL 綜合教學

忘記 MySQL Root 密碼?跳過授權表緊急重置全流程 (Windows/Linux 通用)

生產環境禁用 skip-grant-tables 後重啟屬高風險操作,需在維護窗口、備份驗證後執行。本文提供標準化重置流程。

Windows 環境

  1. 以管理員身份打開 CMD,停止服務:net stop mysql (或服務名 MySQL57)。
  2. 進入 bin 目錄:cd /d "C:\Program Files\MySQL\MySQL Server 5.7\bin"。
  3. 啟動跳過授權模式:mysqld --skip-grant-tables --console (保持窗口開啟)。
  4. 新開 CMD 免密登錄:mysql -uroot -p (直接回車)。
  5. 修改密碼 (5.7+ authentication_string 列):
USE mysql;
UPDATE user SET authentication_string=PASSWORD('NewPass123!') WHERE User='root' AND Host='localhost';
FLUSH PRIVILEGES;
  1. 關閉 --skip-grant-tables 窗口 (Ctrl+C),正常啟動服務:net start mysql。
  2. 新密碼驗證:mysql -uroot -pNewPass123!。

Linux 環境 (systemd)

  1. 停止服務:systemctl stop mysqld。
  2. 創建臨時配置:
mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld
cat > /etc/my.cnf.d/skip-grant.cnf <<'EOF'
[mysqld]
skip-grant-tables
skip-networking
EOF
  1. 啟動:systemctl start mysqld。
  2. 免密登錄:mysql -uroot。
  3. 修改密碼:
USE mysql;
UPDATE user SET authentication_string=PASSWORD('NewPass123!') WHERE User='root';
FLUSH PRIVILEGES;
  1. 移除臨時配置:rm /etc/my.cnf.d/skip-grant.cnf。
  2. 重啟驗證:systemctl restart mysqld && mysql -uroot -pNewPass123!。

MySQL 8.0 特殊處理

-- 8.0 使用 caching_sha2_password,需指定插件
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NewPass123!';
-- 或
UPDATE user SET authentication_string=NULL, plugin='mysql_native_password' WHERE User='root';
FLUSH PRIVILEGES;

安全建議

  • 操作前備份 mysql.user 表。
  • 重置後立即檢查是否有匿名用戶、弱密碼賬號,執行 mysql_secure_installation。
  • 生產庫建議使用密碼管理工具 (Vault/Keepass) 存儲 root 密碼,避免遺忘。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved