跳過權限表驗證(--skip-grant-tables)啟動 MySQL,以無密碼 root 身分登入,修改 mysql.user 表密碼欄位,刷新權限,重啟正常模式。
systemctl stop mysqld
# 或
service mysql stop
mysqld_safe --skip-grant-tables --skip-networking &
# --skip-networking 防止外部連入,僅本機操作
mysql -u root
# 進入 mysql> 提示符後執行:
USE mysql;
-- MySQL 5.7.6+ / 8.0
UPDATE user SET authentication_string=PASSWORD('NewPass123!') WHERE User='root' AND Host='localhost';
-- MySQL 5.7.5 及更早
UPDATE user SET password=PASSWORD('NewPass123!') WHERE User='root' AND Host='localhost';
FLUSH PRIVILEGES;
EXIT;
pkill mysqld
systemctl start mysqld
mysql -u root -p'NewPass123!' -e "SELECT VERSION();"
net stop mysql(或 net stop mysql80 視服務名)。C:\Program Files\MySQL\MySQL Server 8.0\bin)。mysqld --skip-grant-tables --skip-networking
(視窗保持開啟,勿關閉)mysql -u root
# 同 Linux 步驟 3 修改密碼
net start mysql。authentication_string,不再使用 password。caching_sha2_password,若舊版客戶端連線失敗,可改用 mysql_native_password:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NewPass123!';
UPDATE user SET Host='localhost' WHERE User='root';掌握此流程,密碼遺忘不再是障礙,安全輪換更從容。