ALTER USER
Changes ClickHouse 用户账户。
语法:
要使用 ALTER USER
,您必须具有 ALTER USER 特权。
GRANTEES 子句
指定允许从此用户接收 特权 的用户或角色,前提是此用户也拥有所有通过 GRANT OPTION 授予的所需访问权限。GRANTEES
子句的选项:
user
— 指定此用户可以授予特权的用户。role
— 指定此用户可以授予特权的角色。ANY
— 此用户可以将特权授予任何人。这是默认设置。NONE
— 此用户不能授予任何特权。
您可以使用 EXCEPT
表达式排除任何用户或角色。例如,ALTER USER user1 GRANTEES ANY EXCEPT user2
。这意味着如果 user1
已获得某些通过 GRANT OPTION
授予的特权,它将能够将这些特权授予除 user2
之外的任何人。
示例
将分配的角色设置为默认:
如果没有之前分配的角色,ClickHouse 将抛出异常。
将所有分配的角色设置为默认:
如果将来为用户分配角色,它将自动成为默认角色。
将所有分配的角色设置为默认,排除 role1
和 role2
:
允许具有 john
账户的用户将自己的特权授予具有 jack
账户的用户:
在保留现有身份验证方法的情况下向用户添加新的身份验证方法:
注意:
- 较旧版本的 ClickHouse 可能不支持多重身份验证方法的语法。因此,如果 ClickHouse 服务器包含此类用户并降级到不支持该功能的版本,则此类用户将变为不可用,并且某些与用户相关的操作将中断。为了优雅地降级,必须在降级之前将所有用户设置为包含单一身份验证方法。或者,如果服务器在没有适当程序的情况下降级,则应删除有问题的用户。
- 出于安全原因,
no_password
不能与其他身份验证方法共存。因为这样,无法ADD
no_password
身份验证方法。以下查询将抛出错误:
如果您想为用户删除身份验证方法并依赖 no_password
,您必须以以下替换形式指定。
重置身份验证方法并添加查询中指定的方法(效果类似于省略 ADD 关键字的 IDENTIFIED):
重置身份验证方法并保留最近添加的一个:
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'