啟動 MySQL 時加入 --skip-grant-tables 跳過權限驗證,以免密碼登入,修改 mysql.user 表重置密碼,再正常重啟。
net stop mysql
# 或 net stop mysql57 / mysql80 視服務名而定
cd "C:\Program Files\MySQL\MySQL Server 8.0\bin"
mysqld --skip-grant-tables --skip-networking
--skip-networking 防止外部連入修改期間被惡意利用。
mysql -u root
-- MySQL 5.7 / 8.0
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass123!';
-- 或
UPDATE mysql.user SET authentication_string = NULL WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass123!';
-- MySQL 5.6 / 5.0
UPDATE mysql.user SET Password = PASSWORD('NewStrongPass123!') WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;
mysqld.exe。net start mysql
mysql -uroot -p'NewStrongPass123!'
C:\mysql-init.txt:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass123!';
mysqld --init-file=C:\\mysql-init.txt --console
[mysqld]
skip-grant-tables
# 重啟後免密登入改密,改完註釋掉重啟
sc query state= all | findstr mysql 確認確切服務名。ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'pass';。--defaults-file="C:\my.cnf" 指向正確配置。