假設你要為用戶名為'username'@'localhost'的用戶設置新密碼,你可以這樣做: 其中,username 是用戶名,localhost 是主機名, 123456是要更改的新密碼。 方法1: 用 ALTER 語句 ALTER USER 'username'@'localhost' IDE ...
假設你要為用戶名為'username'@'localhost'的用戶設置新密碼,你可以這樣做:
其中,username 是用戶名,localhost 是主機名, 123456是要更改的新密碼。
方法1: 用 ALTER 語句
ALTER USER 'username'@'localhost' IDENTIFIED BY '123456';
方法2:用 SET 語句
使用 SET 語句來修改普通用戶密碼,語法格式如下:
SET PASSWORD FOR 'username'@'localhost' = PASSWORD('123456');
註意:新密碼要使用 PASSWORD() 函數來加密,如果不使用 PASSWORD() 加密,也會執行成功,但是用戶會無法登錄。
在MySQL 5.7.6及更新版本中,PASSWORD() 函數已經被棄用,可以直接設置密碼字元串。
SET PASSWORD FOR 'username'@'localhost' = '123456';
使用SET語句修改 root 用戶的密碼可以寫成這樣。
SET PASSWORD = PASSWORD ('123456');
方法3:用mysqladmin
利用mysqladmin,不需要登錄,可以直接修改,修改密碼格式為:
mysqladmin -u用戶名 -p舊密碼 password 新密碼(具體的參數可以按需求來使用)
mysqladmin -uroot -h localhost -p123 password 123456 -S /tmp/mysql.sock
方法4:用 UPDATE 直接編輯 user 表
可以使用 UPDATE 語句修改 MySQL 資料庫的 user 表的 authentication_string 欄位,從而修改普通用戶的密碼。UPDATA 語句的語法如下:
UPDATA mysql.user SET authentication_string=PASSWORD('123456') WHERE USER ='username' AND HOST ='localhost';
在早期版本的MySQL中,還可以用以下方法修改密碼,這種方法現在不再推薦使用,因為它可能會繞過一些內置的安全機制,而且在新版本的MySQL中可能不起作用。
UPDATA mysql.user SET PASSWORD=PASSWORD('123456') WHERE USER ='username' AND HOST='localhost';
方法5:使用 GRANT 語句
除了前面介紹的方法,還可以在全局級別使用 GRANT USAGE 語句指定某個賬戶的密碼而不影響賬戶當前的許可權。需要註意的是,使用 GRANT 語句修改密碼,必須擁有 GRANT 許可權。語法格式如下:
GRANT USAGE ON *.* TO 'username'@'localhost' IDENTIFIED BY '123456';
然而,需要註意的是,從MySQL 5.7開始,使用 GRANT 語句來設置或修改用戶密碼已經被廢棄,到了MySQL 8.0 就完全不再支持使用 GRANT 來設置密碼了。
重要說明:
-
在MySQL 5.7.6及更高版本中,不應該直接操作
mysql.user
表來修改密碼,因為密碼欄位已經從Password
變更為authentication_string
,並且密碼的哈希演算法也發生了改變。直接操作系統表可能導致不可預測的行為,甚至可能損壞許可權數據。 -
從MySQL 5.7開始,建議使用
ALTER USER
或SET PASSWORD
,因為它們提供了更安全和一致的方式來管理用戶密碼。
總之,直接使用UPDATE
語句修改用戶密碼雖然在某些情況下是可能的,但並不推薦這樣做。始終使用官方推薦的方法來確保全全性和相容性。如果你正在使用MySQL的較新版本,請避免直接操作系統表,並且始終遵循最佳實踐,最好使用ALTER
。