MySQL - ALTER USER 语句



MySQL ALTER USER 语句

您可以使用 ALTER USER 语句修改 MySQL 中现有的账户。使用此语句,您可以更改身份验证、角色、SSL/TLS、资源限制和密码管理属性。

要执行此语句,当前账户需要具有 CREATE USER 或 ALTER USER 权限。

语法

以下是 MySQL CREATE USER 语句的语法:

ALTER USER [IF EXISTS]
user [auth_option] [, user [auth_option]] ...
[REQUIRE {NONE | tls_option [[AND] tls_option] ...}]
[WITH resource_option [resource_option] ...]
[password_option | lock_option] ...
[COMMENT 'comment_string' | ATTRIBUTE 'json_object']

示例

假设我们使用 CREATE USER 语句创建了一个用户。

CREATE USER 'sample'@'localhost' IDENTIFIED BY '123456';

以下查询更改了上面创建的用户密码:

ALTER USER 'sample'@'localhost' IDENTIFIED BY 'testpassword';

您可以使用以下查询修改当前用户的密码:

ALTER USER USER() IDENTIFIED BY 'MyPassword';

修改用户注释

假设我们创建了一个新用户,并添加了如下注释:

drop user sample@localhost; 
CREATE USER 'sample'@'localhost' COMMENT 'Sample information';

您可以验证属性和注释信息,如下所示:

SELECT * FROM INFORMATION_SCHEMA.USER_ATTRIBUTES WHERE 
USER='sample' AND HOST='localhost';

输出

以下是上述查询的输出:

用户 主机 属性
sample localhost {"comment": "Sample information"}

以下查询更改了上面创建的注释:

ALTER USER 'sample'@'localhost' COMMENT 'new information';

您可以如下验证属性和注释信息:

SELECT * FROM INFORMATION_SCHEMA.USER_ATTRIBUTES WHERE 
USER='sample' AND HOST='localhost';

输出

上述 MySQL 查询生成以下输出:

用户 主机 属性
sample localhost {"comment": "new information"}

修改用户属性

假设我们创建了一个新用户,并添加了如下属性:

drop user sample@localhost; 
CREATE USER 'sample'@'localhost' ATTRIBUTE 
'{"attr1": "val1", "attr2": "val2"}'; 

您可以验证属性和注释信息,如下所示:

SELECT * FROM INFORMATION_SCHEMA.USER_ATTRIBUTES WHERE 
USER='sample' AND HOST='localhost';

输出

上述 MySQL 查询将产生以下输出:

用户 主机 属性
sample localhost {"attr1": "val1", "attr2": "val2"}

以下查询更改了上面创建的属性:

ALTER USER 'sample'@'localhost' ATTRIBUTE 
'{"attr1": "newval1", "attr2": "newval2"}';

您可以如下验证属性和注释信息:

SELECT * FROM INFORMATION_SCHEMA.USER_ATTRIBUTES WHERE 
USER='sample' AND HOST='localhost'; 
输出

以下是上述查询的输出:

用户 主机 属性
sample localhost {"attr1": "newval1", "attr2": "newval2"}

修改角色

我们可以使用 CREATE ROLE 语句创建角色,如下所示:

CREATE ROLE 'TestAdmin', 'TestDeveloper';

将权限授予上面创建的角色:

GRANT ALL PRIVILEGES ON * . * TO TestAdmin, TestDeveloper;

假设我们创建了一个用户,并设置了如下默认角色:

CREATE USER IF NOT EXISTS testuser@localhost DEFAULT ROLE 'TestAdmin';

将权限授予创建的用户:

GRANT ALL PRIVILEGES ON * . * TO 'testuser'@'localhost';

以下查询更改了上面创建用户的角色:

ALTER USER testuser@localhost DEFAULT ROLE 'TestAdmin';

IF EXISTS 子句

如果您尝试更改不存在的用户,将生成如下错误:

ALTER USER demo@localhost;
ERROR 1396 (HY000): Operation ALTER USER failed for 'demo'@'localhost'

如果您将 **IF EXISTS** 子句与 ALTER FUNCTION 语句一起使用,如下所示,则将更改指定的用户,如果不存在具有给定名称的函数,则将忽略该查询。

ALTER USER IF EXISTS sample;

EXPIRE 子句

如果您使用 expire 子句,旧密码将立即过期,用户需要在第一次连接时选择新密码。

drop user sample@localhost;
CREATE USER 'sample'@'localhost' IDENTIFIED BY '123456';

以下查询更改了上面创建的密码。

ALTER USER 'sample'@'localhost' IDENTIFIED BY 'MyPassword' PASSWORD EXPIRE;

您还可以将间隔设置为 expire 子句,如下所示:

drop user sample@localhost;
CREATE USER 'sample'@'localhost'
IDENTIFIED BY 'MyPassword'
PASSWORD EXPIRE INTERVAL 25 DAY
FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LOCK_TIME 1;

以下查询更改了上面创建的密码及其间隔。

ALTER USER 'sample'@'localhost'
IDENTIFIED BY 'testpassword'
PASSWORD EXPIRE INTERVAL 225 DAY
FAILED_LOGIN_ATTEMPTS 2 PASSWORD_LOCK_TIME 1;

锁定和解锁

您可以使用 alter 语句锁定和解锁现有用户。以下查询锁定名为“sample”的用户:

ALTER USER 'sample'@'localhost' ACCOUNT LOCK;

以下查询解锁它:

ALTER USER 'sample'@'localhost' ACCOUNT UNLOCK;
广告

© . All rights reserved.