萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 修改用戶密碼:SET PASSWORD 與 UPDATE user 兩種方法詳解

方法一:SET PASSWORD 語法(推薦)

修改當前登錄用戶密碼

SET PASSWORD = PASSWORD('new_password');

修改指定用戶密碼(需 SUPER 權限)

SET PASSWORD FOR 'username'@'host' = PASSWORD('new_password');
  • username@host 必須與 mysql.user 表記錄完全一致(含主機名通配符 %)。
  • PASSWORD() 函數加密後存儲,不可用明文。

方法二:UPDATE mysql.user 表(兼容舊版/特殊場景)

-- 1. 以 root 登錄
mysql -u root -p

-- 2. 更新密碼
mysql> UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE user = 'username' AND host = 'host';
-- MySQL 5.7+ 字段為 authentication_string,5.6 為 password

-- 3. 刷新權限生效
mysql> FLUSH PRIVILEGES;

完整實操範例

# 登錄
mysql -u root -p
Enter password: ******

# 修改普通用戶 app_user@% 密碼為 P@ssw0rd123
mysql> SET PASSWORD FOR 'app_user'@'%' = PASSWORD('P@ssw0rd123');
Query OK, 0 rows affected (0.01 sec)

# 或用 UPDATE(5.7+)
mysql> UPDATE mysql.user SET authentication_string = PASSWORD('P@ssw0rd123') WHERE user = 'app_user' AND host = '%';
mysql> FLUSH PRIVILEGES;

# 驗證
mysql> EXIT;
shell> mysql -u app_user -p'P@ssw0rd123' -e "SELECT 1;"
+---+
| 1 |
+---+
| 1 |
+---+

注意事項

  • MySQL 5.7+ 默認密碼插件 mysql_native_password,PASSWORD() 生成 41 位十六進制 hash。
  • MySQL 8.0 默認 caching_sha2_password,建議用 ALTER USER 'user'@'host' IDENTIFIED BY 'pwd'; 替代。
  • 修改 root 密碼同理,但需注意 host 匹配(localhost vs 127.0.0.1 vs %)。
  • 權限變更必須 FLUSH PRIVILEGES 或重啟服務生效(SET PASSWORD 自動刷新)。
copyright © 萬盛學電腦網 all rights reserved