首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 修改使用者密碼三種方法:UPDATE、SET PASSWORD、mysqladmin 對比

     編輯:MySQL 資料庫相關知識

MySQL 中修改使用者密碼有三種標準方式,適用不同場景。本文對比語法、權限需求、生效機制與注意事項。

方法一:UPDATE mysql.user 表 (最通用、可批次)

mysql -u root -p mysql
mysql> UPDATE user SET Password = PASSWORD('new_password') WHERE User = 'hunte';
mysql> FLUSH PRIVILEGES;  -- 必須執行,重載授權快取
mysql> QUIT
  • 需 UPDATE 權限於 mysql.user
  • 可一次修改多個使用者
  • 必須 FLUSH PRIVILEGES 否則不生效

方法二:SET PASSWORD 語法 (標準 SQL、單一使用者)

mysql -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,即時生效
  • MySQL 內部自動刷新授權
  • 語法更語意化,推薦互動式單一修改
  • MySQL 5.7.6+ 支援 SET PASSWORD FOR user = 'auth_string' (不需 PASSWORD())

方法三:mysqladmin 命令列工具 (腳本自動化、無需進入 Shell)

# 修改 root 密碼 (舊密碼已知)
mysqladmin -u root -p'old_password' password 'new_password'

# 首次設定 root 密碼 (無舊密碼)
mysqladmin -u root password 'new_password'
  • 適合 Shell 腳本、自動化部署 (Ansible/Docker)
  • 需知舊密碼 (除首次設定)
  • 密碼含特殊字元需妥善跳脫

版本差異提醒

現代最佳實踐 (MySQL 5.7.6+ / 8.0)

-- 單一使用者
ALTER USER 'hunte'@'%' IDENTIFIED BY 'new_strong_password';

-- 批次修改 (需 SUPER 權限)
UPDATE mysql.user SET authentication_string = '' WHERE User = 'hunte';
FLUSH PRIVILEGES;
-- 然後各自用 ALTER USER 設定新密碼

安全建議

  • 密碼長度 ≥ 12、含大小寫/數字/符號
  • 定期輪換、不重複使用
  • 應用程式使用專用帳號、最小權限、密碼存放於 Vault/Secrets Manager
  • 啟用 validate_password 元件強制複雜度

結語

互動式用 SET PASSWORD / ALTER USER;腳本用 mysqladmin;批次維護用 UPDATE + FLUSH PRIVILEGES。理解版本差異,避免 PASSWORD() 在新版失效。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
版本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 插件