跳過授權表啟動(--skip-grant-tables) → 免密登入 → 更新密碼 → 正常重啟
net stop mysql 或 sc stop mysql。cd C:\Program Files\MySQL\MySQL Server 8.0\bin。mysqld --skip-grant-tables --console(視窗保持開啟)。mysql -u root。FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass123!';
-- 或 5.7
UPDATE mysql.user SET authentication_string=PASSWORD('NewPass') WHERE User='root';
FLUSH PRIVILEGES;
net start mysql。mysql -u root -p。# 1. 停止服務
systemctl stop mysqld
# 2. 跳過授權啟動(背景執行)
mysqld_safe --skip-grant-tables &
# 3. 免密登入
mysql -u root
# 4. 更新密碼(同 Windows 步驟 6)
# 5. 關閉背景進程,正常啟動
mysqladmin -u root -p shutdown # 用新密碼關閉
systemctl start mysqld
data/mysql 目錄:mv data/mysql data/mysql_bak。mysql 目錄(可從相同版本安裝包提取或全新安裝實例複製)。mysql 目錄放入 data/。mysql_bak.user 表,找回原密碼雜湊或直接編輯修改密碼。rm -rf data/mysql && mv data/mysql_bak data/mysql。風險提示: 此法會暫時丟失所有用戶權限變更,僅建議在有完整備份且無法停機修改密碼的極端情況使用。
"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld"。PASSWORD() 函數已移除,必須用 ALTER USER 或 SET PASSWORD。mysqld_safe。--defaults-file=/etc/my.cnf.3306 避免啟動錯誤實例。dba@'10.0.0.%' 授予 SUPER, PROCESS, RELOAD 等權限,日常運維不用 root。validate_password 強制複雜度,避免弱密碼被暴力破解。忘記 root 密碼不可怕,--skip-grant-tables 是萬能鑰匙。Windows/Linux 步驟大同小異,關鍵在於:停服務 → 跳過授權啟動 → 免密進入 → ALTER USER 改密 → 正常重啟。將流程文檔化、腳本化,關鍵時刻才能手不抖、心不慌。