ALTER USER user_specification [, user_specification] ...
user_specification:
user PASSWORD EXPIRE
该ALTER USER
语句修改 MySQL 帐户。如果您尝试修改不存在的帐户,则会发生错误。
要使用ALTER USER
,您必须具有全局CREATE USER
权限或系统数据库UPDATE
权限
。mysql
当
read_only
启用系统变量时,ALTER USER
额外需要SUPER
权限。
每个帐户名都使用
第 6.2.4 节“指定帐户名”中描述的格式。帐户名的主机名部分(如果省略)默认为'%'
. 也可以指定
CURRENT_USER
或
CURRENT_USER()
引用与当前会话关联的帐户。
对于每个帐户,ALTER USER
使其密码过期。例如:
ALTER USER 'jeffrey'@'localhost' PASSWORD EXPIRE;
帐户的密码过期会影响mysql.user
系统表的相应行:服务器将password_expired
列设置为
'Y'
。
如果帐户密码已过期,客户端会话将以受限模式运行。在受限模式下,在会话中执行的操作会导致错误,直到用户建立新的帐户密码:
mysql> SELECT 1;
ERROR 1820 (HY000): You must SET PASSWORD before executing this statement
mysql> SET PASSWORD = PASSWORD('new_password');
Query OK, 0 rows affected (0.01 sec)
mysql> SELECT 1;
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.00 sec)
这种受限的操作模式允许
SET
语句,如果帐户密码的哈希格式需要
old_passwords
在使用前设置为不同于其默认值的值,这将很有用
SET PASSWORD
。
管理用户可以重置帐户密码,但该帐户的任何现有会话仍然受到限制。使用该帐户的客户端必须断开连接并重新连接才能成功执行语句。
虽然可以通过将过期的密码设置为当前值来“重置”该密码,但作为一种好的策略,最好选择一个不同的密码。