方法一:mysqladmin 命令列
mysqladmin -u user_name -h host_name password "newpwd"
# 自動加密,無需手寫 PASSWORD()
方法二:SET PASSWORD
SET PASSWORD FOR 'jeffrey'@'%' = PASSWORD('biscuit');
-- 修改自己密碼可省略 FOR
SET PASSWORD = PASSWORD('biscuit');
方法三:GRANT USAGE(不影響現有權限)
GRANT USAGE ON *.* TO 'jeffrey'@'%' IDENTIFIED BY 'biscuit';
方法四:直接操作 mysql.user 表
-- 新增
INSERT INTO mysql.user (Host, User, Password) VALUES ('%', 'jeffrey', PASSWORD('biscuit'));
FLUSH PRIVILEGES;
-- 修改
UPDATE mysql.user SET Password = PASSWORD('bagel') WHERE Host = '%' AND User = 'francis';
FLUSH PRIVILEGES;
核心提醒
- 方法二、四必須使用
PASSWORD() 函數加密,否則存入明文導致無法驗證。
- 方法一、三
mysqladmin、GRANT ... IDENTIFIED BY 內建加密,無需手寫 PASSWORD()。
- 修改後**必須
FLUSH PRIVILEGES**(方法一、三隱含,方法二、四顯式)。
- 5.7+
PASSWORD() 已移除,改用 authentication_string 欄位與 ALTER USER。