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

原生身份验证

通过 SQL 命令在 StarRocks 中使用原生身份验证创建和管理用户。

StarRocks 原生身份验证是一种基于密码的身份验证方法。 除此之外,StarRocks 还支持与外部身份验证系统集成,例如 LDAP、OpenID Connect 和 OAuth 2.0。 有关更多说明,请参阅使用安全集成进行身份验证

注意

具有系统定义的角色user_admin的用户可以在 StarRocks 中创建用户、修改用户和删除用户。

创建用户

您可以通过指定用户身份、身份验证方法以及可选的默认角色来创建用户。 要为用户启用原生身份验证,您需要在纯文本或密文中显式指定密码。

以下示例创建用户 jack,允许它仅从 IP 地址 172.10.1.10 连接,启用原生身份验证,将密码设置为纯文本 12345,并将角色 example_role 分配为它的默认角色

CREATE USER jack@'172.10.1.10' IDENTIFIED BY '12345' DEFAULT ROLE 'example_role';
注意
  • StarRocks 在存储用户的密码之前对其进行加密。 您可以使用 password() 函数获取加密后的密码。
  • 如果在用户创建期间未指定默认角色,则会将系统定义的默认角色 PUBLIC 分配给用户。

用户连接到 StarRocks 时会自动激活用户的默认角色。 有关如何在连接后为用户启用所有(默认和授予的)角色的说明,请参阅启用所有角色

有关创建用户的更多信息和高级说明,请参阅CREATE USER

修改用户

您可以修改用户的密码、默认角色或属性。

有关如何修改用户的默认角色的说明,请参阅修改默认角色

修改用户的属性

您可以使用ALTER USER设置用户的属性。

以下示例将用户 jack 的最大连接数设置为 1000。 具有相同用户名的用户身份共享相同的属性。

因此,您只需要为 jack 设置属性,此设置将对所有用户名为 jack 的用户身份生效。

ALTER USER 'jack' SET PROPERTIES ("max_user_connections" = "1000");

重置用户的密码

您可以使用SET PASSWORDALTER USER重置用户的密码。

注意

  • 任何用户都可以重置自己的密码,而无需任何权限。
  • 只有 root 用户本身才能设置其密码。 如果您忘记了密码并且无法连接到 StarRocks,请参阅重置丢失的 root 密码以获取更多说明。

以下两个示例都将 jack 的密码重置为 54321

  • 使用 SET PASSWORD 重置密码

    SET PASSWORD FOR jack@'172.10.1.10' = PASSWORD('54321');
  • 使用 ALTER USER 重置密码

    ALTER USER jack@'172.10.1.10' IDENTIFIED BY '54321';

重置丢失的 root 密码

如果您忘记了 root 用户的密码并且无法连接到 StarRocks,您可以通过以下步骤重置它

  1. 将以下配置项添加到所有 FE 节点的配置文件 fe/conf/fe.conf 以禁用用户身份验证

    enable_auth_check = false
  2. 重新启动所有 FE 节点以使配置生效。

    ./fe/bin/stop_fe.sh
    ./fe/bin/start_fe.sh
  3. 从 MySQL 客户端通过 root 用户连接到 StarRocks。 禁用用户身份验证时,您无需指定密码。

    mysql -h <fe_ip_or_fqdn> -P<fe_query_port> -uroot
  4. 重置 root 用户的密码。

    SET PASSWORD for root = PASSWORD('xxxxxx');
  5. 通过在所有 FE 节点的配置文件 fe/conf/fe.conf 中将配置项 enable_auth_check 设置为 true 来重新启用用户身份验证。

    enable_auth_check = true
  6. 重新启动所有 FE 节点以使配置生效。

    ./fe/bin/stop_fe.sh
    ./fe/bin/start_fe.sh
  7. 使用 root 用户和新密码从 MySQL 客户端连接到 StarRocks,以验证密码是否已成功重置。

    mysql -h <fe_ip_or_fqdn> -P<fe_query_port> -uroot -p<xxxxxx>

删除用户

您可以使用DROP USER删除用户。

以下示例删除用户 jack

DROP USER jack@'172.10.1.10';

查看用户

您可以使用 SHOW USERS 查看 StarRocks 集群中的所有用户。

SHOW USERS;

查看用户属性

您可以使用SHOW PROPERTY查看用户的属性。

以下示例显示用户 jack 的属性

SHOW PROPERTY FOR jack@'172.10.1.10';