Documentation Home

13.7.1.1 ALTER USER 语句

ALTER USER user_specification [, user_specification] ...

user_specification:
    user PASSWORD EXPIRE

ALTER USER语句修改 MySQL 帐户。如果您尝试修改不存在的帐户,则会发生错误。

要使用ALTER USER,您必须具有全局CREATE USER权限或系统数据库UPDATE权限 。mysqlread_only启用系统变量时,ALTER USER额外需要SUPER权限。

每个帐户名都使用 第 6.2.4 节“指定帐户名”中描述的格式。帐户名的主机名部分(如果省略)默认为'%'. 也可以指定 CURRENT_USERCURRENT_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

管理用户可以重置帐户密码,但该帐户的任何现有会话仍然受到限制。使用该帐户的客户端必须断开连接并重新连接才能成功执行语句。

笔记

虽然可以通过将过期的密码设置为当前值来重置该密码,但作为一种好的策略,最好选择一个不同的密码。