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';
输出
以下是上述查询的输出:-
USER | HOST | ATTRIBUTE |
---|---|---|
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 查询生成以下输出 -
USER | HOST | ATTRIBUTE |
---|---|---|
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 查询将产生以下输出:-
USER | HOST | ATTRIBUTE |
---|---|---|
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';
以下是上述查询的输出 -
USER | HOST | ATTRIBUTE |
---|---|---|
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;