ALTER USER
ALTER USER 语句用于修改用户信息,包括密码、认证方式、默认角色和用户属性(自 v3.3.3 版本起支持)。
普通用户可以使用此命令修改自己的信息。只有具有 user_admin
角色的用户才能修改其他用户的信息。
语法
ALTER USER user_identity
[auth_option]
[default_role]
[DEFAULT ROLE <role_name>[, <role_name>, ...]]
[SET PROPERTIES ("key"="value", ...)]
参数
-
user_identity
由两部分组成,分别是 "user_name" 和 "host",格式为username@'userhost'
。对于 "host" 部分,可以使用%
进行模糊匹配。如果未指定 "host",则默认使用 "%",表示用户可以从任何主机连接到 StarRocks。但是,当您使用此语句以及SET PROPERTIES
修改用户属性时,必须指定username
而不是user_identity
。 -
auth_option
指定认证方式。当前支持三种认证方式:StarRocks 原生密码、mysql_native_password 和 "authentication_ldap_simple"。StarRocks 原生密码在逻辑上与 mysql_native_password 相同,但在语法上略有不同。一个用户身份只能使用一种认证方式。您可以使用 ALTER USER 修改用户的密码和认证方式。auth_option: {
IDENTIFIED BY 'auth_string'
IDENTIFIED WITH mysql_native_password BY 'auth_string'
IDENTIFIED WITH mysql_native_password AS 'auth_string'
IDENTIFIED WITH authentication_ldap_simple AS 'auth_string'
}认证方式 用户创建密码 登录密码 原生密码 明文或密文 明文 mysql_native_password BY
明文 明文 mysql_native_password WITH
密文 明文 authentication_ldap_simple
明文 明文
注意:StarRocks 会在存储用户密码之前对其进行加密。
-
DEFAULT ROLE
设置用户的默认角色。-- Set specified roles as default roles.
DEFAULT ROLE <role_name>[, <role_name>, ...]
-- Set all roles of the user, including roles that will be assigned to this user, as default roles.
DEFAULT ROLE ALL
-- No default role is set but the public role is still enabled after a user login.
DEFAULT ROLE NONE在运行 ALTER USER 设置默认角色之前,请确保已将所有角色分配给用户。这些角色会在用户再次登录后自动激活。
-
SET PROPERTIES
设置用户属性,包括最大用户连接数 (max_user_connections
)、catalog、database 或用户级别的会话变量。用户级别的会话变量会在用户登录时生效。此功能自 v3.3.3 版本起支持。-- Set the maximum user connection number.
SET PROPERTIES ("max_user_connections" = "<Integer>")
-- Set the catalog.
SET PROPERTIES ("catalog" = "<catalog_name>")
-- Set the database.
SET PROPERTIES ("catalog" = "<catalog_name>", "database" = "<database_name>")
-- Set session variables.
SET PROPERTIES ("session.<variable_name>" = "<value>", ...)
-- Clear the properties set for the user.
SET PROPERTIES ("catalog" = "", "database" = "", "session.<variable_name>" = "");提示SET PROPERTIES
作用于用户而不是用户身份。因此,在修改用户属性时,必须在ALTER USER
语句中指定username
而不是user_identity
。- 全局变量和只读变量不能为特定用户设置。
- 变量生效的顺序如下:SET_VAR > 会话 > 用户属性 > 全局。
- 您可以使用 SHOW PROPERTY 查看特定用户的属性。
示例
示例 1:将用户密码更改为明文密码。
ALTER USER 'jack' IDENTIFIED BY '123456';
ALTER USER jack@'172.10.1.10' IDENTIFIED WITH mysql_native_password BY '123456';
示例 2:将用户密码更改为密文密码。
ALTER USER jack@'172.10.1.10' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9';
ALTER USER jack@'172.10.1.10' IDENTIFIED WITH mysql_native_password AS '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9';
您可以使用 password() 函数获取加密的密码。
示例 3:将认证方式更改为 LDAP。
ALTER USER jack@'172.10.1.10' IDENTIFIED WITH authentication_ldap_simple;
示例 4:将认证方式更改为 LDAP,并指定 LDAP 中用户的 distinguished name (DN)。
ALTER USER jack@'172.10.1.10' IDENTIFIED WITH authentication_ldap_simple AS 'uid=jack,ou=company,dc=example,dc=com';
示例 5:将用户的默认角色更改为 db_admin
和 user_admin
。请注意,必须已为用户分配这两个角色。
ALTER USER 'jack'@'192.168.%' DEFAULT ROLE db_admin, user_admin;
示例 6:设置用户的所有角色,包括将分配给此用户的角色作为默认角色。
ALTER USER 'jack'@'192.168.%' DEFAULT ROLE ALL;
示例 7:清除用户的所有默认角色。
ALTER USER 'jack'@'192.168.%' DEFAULT ROLE NONE;
注意:默认情况下,仍然为用户激活
public
角色。
示例 8:将最大用户连接数设置为 600
。
ALTER USER 'jack' SET PROPERTIES ("max_user_connections" = "600");
示例 9:将用户的 catalog 设置为 hive_catalog
。
ALTER USER 'jack' SET PROPERTIES ('catalog' = 'hive_catalog');
示例 10:在默认 catalog 中将用户的 database 设置为 test_db
。
ALTER USER 'jack' SET PROPERTIES ('catalog' = 'default_catalog', 'database' = 'test_db');
示例 11:将用户的会话变量 query_timeout
设置为 600
。
ALTER USER 'jack' SET PROPERTIES ('session.query_timeout' = '600');
示例 12:清除为用户设置的属性。
ALTER USER 'jack' SET PROPERTIES ('catalog' = '', 'database' = '', 'session.query_timeout' = '');