- 停止 MySQL 服務
net stop mysql
# 或 services.msc 圖形介面停止
- 以跳過授權表模式啟動 mysqld
# 方式 A:命令列直接啟動(前台阻塞,需另開視窗)
"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe" --skip-grant-tables --console
# 方式 B:修改 my.ini 永久生效(推薦,避免佔用視窗)
# 在 [mysqld] 區塊新增:skip-grant-tables
# 然後 net start mysql
- 無密碼登入並修改密碼
mysql -uroot
-- 進入 mysql> 提示符後
USE mysql;
-- MySQL 5.7 / 8.0
UPDATE user SET authentication_string = '' WHERE User = 'root';
FLUSH PRIVILEGES;
-- 8.0 還需更新 plugin(caching_sha2_password)
UPDATE user SET plugin = 'mysql_native_password' WHERE User = 'root';
FLUSH PRIVILEGES;
-- 設定新密碼
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass123';
-- 或 5.7 語法
-- SET PASSWORD FOR 'root'@'localhost' = PASSWORD('NewStrongPass123');
- 恢復正常模式
- 若用方式 A:
Ctrl+C 停止前台 mysqld,任務管理器結束殘留進程,net start mysql。
- 若用方式 B:編輯
my.ini 註釋掉 skip-grant-tables,net stop mysql && net start mysql。
- 驗證新密碼
mysql -uroot -pNewStrongPass123 -e "SELECT VERSION();"