跳到主要内容
跳到主要内容

ALTER USER

更改 ClickHouse 用户帐户。

语法:

要使用 ALTER USER,您必须具有 ALTER USER 权限。

GRANTEES 子句

指定允许从此用户接收 权限 的用户或角色,前提是该用户还拥有所有必需的访问权限,并带有 GRANT OPTIONGRANTEES 子句的选项:

  • user — 指定此用户可以授予权限的用户。
  • role — 指定此用户可以授予权限的角色。
  • ANY — 此用户可以授予权限给任何人。默认设置为此。
  • NONE — 此用户无法授予任何权限。

您可以使用 EXCEPT 表达式排除任何用户或角色。例如,ALTER USER user1 GRANTEES ANY EXCEPT user2。这意味着,如果 user1 授予了一些带有 GRANT OPTION 的权限,则它将能够将这些权限授予除了 user2 之外的任何人。

示例

将分配的角色设置为默认:

如果用户之前未分配角色,ClickHouse 会抛出异常。

将所有分配的角色设置为默认:

如果将来为用户分配角色,则该角色将自动成为默认角色。

将所有分配的角色设置为默认,排除 role1role2

允许 john 帐户的用户将其权限授予 jack 帐户的用户:

在保留现有身份验证方法的同时为用户添加新身份验证方法:

注意:

  1. 较旧版本的 ClickHouse 可能不支持多个身份验证方法的语法。因此,如果 ClickHouse 服务器中包含此类用户并降级到不支持的版本,则此类用户将变得不可用,并且某些与用户相关的操作将中断。为了平稳降级,必须先将所有用户设置为包含单一身份验证方法。如果服务器在没有适当程序的情况下被降级,则应删除有问题的用户。
  2. no_password 由于安全原因不能与其他身份验证方法共存。因此,不可能 ADD 一个 no_password 身份验证方法。下面的查询将抛出错误:

如果您想要删除用户的身份验证方法并依赖 no_password,必须在下面的替换形式中指定。

重置身份验证方法并添加查询中指定的身份验证方法(带有 IDENTIFIED 前缀而不使用 ADD 关键字的效果):

重置身份验证方法并保留最近添加的一个:

VALID UNTIL 子句

允许您指定身份验证方法的到期日期和(可选)时间。它接受一个字符串作为参数。建议使用 YYYY-MM-DD [hh:mm:ss] [timezone] 格式的日期时间。默认情况下,此参数等于 'infinity'VALID UNTIL 子句只能与身份验证方法一起指定,除非查询中未指定身份验证方法。在这种情况下,VALID UNTIL 子句将应用于所有现有的身份验证方法。

示例:

  • ALTER USER name1 VALID UNTIL '2025-01-01'
  • ALTER USER name1 VALID UNTIL '2025-01-01 12:00:00 UTC'
  • ALTER USER name1 VALID UNTIL 'infinity'
  • ALTER USER name1 IDENTIFIED WITH plaintext_password BY 'no_expiration', bcrypt_password BY 'expiration_set' VALID UNTIL '2025-01-01'