MySQL 中修改使用者密碼有三種標準方式,適用不同場景。本文對比語法、權限需求、生效機制與注意事項。
mysql -u root -p mysql
mysql> UPDATE user SET Password = PASSWORD('new_password') WHERE User = 'hunte';
mysql> FLUSH PRIVILEGES; -- 必須執行,重載授權快取
mysql> QUIT
UPDATE 權限於 mysql.usermysql -u root -p mysql
mysql> SET PASSWORD FOR 'hunte'@'%' = PASSWORD('new_password');
-- 或指定主機
mysql> SET PASSWORD FOR 'hunte'@'localhost' = PASSWORD('new_password');
mysql> QUIT -- 無需 FLUSH PRIVILEGES,即時生效
SET PASSWORD FOR user = 'auth_string' (不需 PASSWORD())# 修改 root 密碼 (舊密碼已知)
mysqladmin -u root -p'old_password' password 'new_password'
# 首次設定 root 密碼 (無舊密碼)
mysqladmin -u root password 'new_password'
| 版本 | Password 欄位 | PASSWORD() 函數 | 備註 |
|---|---|---|---|
| 5.6 及以前 | Password CHAR(41) | 回傳 16 進位雜湊 | |
| 5.7.6+ | authentication_string TEXT | 棄用,回傳 NULL | 改用 SET PASSWORD ... = '明文' 或 ALTER USER |
| 8.0+ | authentication_string | 移除 | 預設 caching_sha2_password 插件 |