修改 MySQL 密碼通常需要 root 權限。一般使用者無法自行變更密碼,需請求資料庫管理員協助。本文整理六種修改密碼的方法,適用於不同場景與版本。
mysql 資料庫user 表中對應使用者的 Password 欄位PASSWORD(),輸入新密碼後執行FLUSH PRIVILEGES; 重新載入權限# 修改 root 密碼
mysqladmin -u root -p password 'new_password'
# 輸入原密碼後完成修改
# 修改其他使用者密碼
mysqladmin -u username -p password 'new_password'
限制:無法將密碼設為空值;需確保 mysqladmin 能連線至 MySQL Server。
INSERT INTO mysql.user (Host, User, Password)
VALUES ('%', 'jeffrey', PASSWORD('biscuit'));
FLUSH PRIVILEGES;
建立使用者 jeffrey,密碼 biscuit,允許任意主機連線(%)。
REPLACE INTO mysql.user (Host, User, Password)
VALUES ('%', 'jeffrey', PASSWORD('biscuit'));
FLUSH PRIVILEGES;
若使用者已存在則更新,不存在則插入,比 INSERT 更安全。
SET PASSWORD FOR 'jeffrey'@'%' = PASSWORD('biscuit');
MySQL 5.7.6+ 建議使用 ALTER USER:
ALTER USER 'jeffrey'@'%' IDENTIFIED BY 'biscuit';
GRANT USAGE ON *.* TO 'jeffrey'@'%' IDENTIFIED BY 'biscuit';
無需 PASSWORD() 函數,也無需 FLUSH PRIVILEGES。注意:PASSWORD() 加密方式非 Unix 密碼加密標準。
USE mysql;
UPDATE user SET Password = PASSWORD('newpassword') WHERE User = 'root';
FLUSH PRIVILEGES;
systemctl stop mysqldmysqld_safe --skip-grant-tables &mysql -u rootMySQL 5.7+ 將 Password 欄位改名為 authentication_string,且預設使用 caching_sha2_password 插件。新版本請優先使用 ALTER USER 語法。