MySQL 修改 root 密碼的四種標準姿勢,涵蓋日常運維、腳本自動化、權限表直接操作、忘記密碼緊急重置,附 5.7+/8.0 欄位變更注意事項。
mysql -u root -p
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
# 首次設定/無舊密碼
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;
# 1. 停止服務
service mysqld stop
# 2. 跳過授權表啟動(建議加 --skip-networking)
mysqld_safe --skip-grant-tables --skip-networking &
# 3. 免密登入並更新
mysql -u root mysql
UPDATE user SET Password = PASSWORD("newpass") WHERE User = 'root';
FLUSH PRIVILEGES;
# 4. 結束臨時進程,正常啟動
killall mysqld
service mysqld start
| 版本 | 密碼欄位 | 更新語句 |
|---|---|---|
| 5.6 及之前 | Password | UPDATE user SET Password = PASSWORD('x') ... |
| 5.7 | authentication_string | UPDATE user SET authentication_string = PASSWORD('x') ... |
| 8.0 | authentication_string | ALTER USER 'root'@'localhost' IDENTIFIED BY 'x';(推薦) |
8.0 預設 caching_sha2_password 插件,舊客戶端需指定 mysql_native_password:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpass';
SET PASSWORD 或 mysqladmin。mysqladmin(可讀取 stdin 密碼)。user 表是否有匿名帳號、root@'%' 等風險帳號並清理。掌握四種方法,應對所有密碼變更場景遊刃有餘。