| 場景 | 適用方案 | 前提條件 |
|---|---|---|
| 知舊密碼,常規修改 | 方案 1、2、3 | 能正常登入 |
| 完全忘記、無法登入 | 方案 4 | 有系統 root/sudo 權限 |
mysql -u root -p
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
FLUSH PRIVILEGES;
# 首次設密或知舊密 mysqladmin -u root password "newpass" # 已有密碼修改 mysqladmin -u root -p'oldpass' password "newpass"
mysql -u root -p
USE mysql;
UPDATE user SET Password = PASSWORD('newpass') WHERE User = 'root';
FLUSH PRIVILEGES;
注意:MySQL 5.7+ 密碼列改為 authentication_string,語法需調整:
UPDATE user SET authentication_string = PASSWORD('newpass') WHERE User = 'root';
systemctl stop mysqld / net stop mysqlmysqld_safe --skip-grant-tables &mysql -u rootUSE mysql;
UPDATE user SET Password = PASSWORD('newpass') WHERE User = 'root';
-- 5.7+ 用 authentication_string
FLUSH PRIVILEGES;
systemctl restart mysqld@echo off
net stop mysql
start "mysqld_safe" mysqld --skip-grant-tables
timeout /t 3
mysql -u root -e "USE mysql; UPDATE user SET Password=PASSWORD('newpass') WHERE User='root'; FLUSH PRIVILEGES;"
taskkill /f /im mysqld.exe
net start mysql
echo 密碼已重置為 newpass
pause
mysql_secure_installationDELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost','127.0.0.1','::1');validate_password 插件強制複雜度