跳到主要内容
版本: 最新版本-3.5

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_adminuser_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' = '');

参考