ALTER USER
更改 ClickHouse 用户帐户。
语法
ALTER USER [IF EXISTS] name1 [RENAME TO new_name |, name2 [,...]]
[ON CLUSTER cluster_name]
[NOT IDENTIFIED | RESET AUTHENTICATION METHODS TO NEW | {IDENTIFIED | ADD IDENTIFIED} {[WITH {plaintext_password | sha256_password | sha256_hash | double_sha1_password | double_sha1_hash}] BY {'password' | 'hash'}} | WITH NO_PASSWORD | {WITH ldap SERVER 'server_name'} | {WITH kerberos [REALM 'realm']} | {WITH ssl_certificate CN 'common_name' | SAN 'TYPE:subject_alt_name'} | {WITH ssh_key BY KEY 'public_key' TYPE 'ssh-rsa|...'} | {WITH http SERVER 'server_name' [SCHEME 'Basic']}
[, {[{plaintext_password | sha256_password | sha256_hash | ...}] BY {'password' | 'hash'}} | {ldap SERVER 'server_name'} | {...} | ... [,...]]]
[[ADD | DROP] HOST {LOCAL | NAME 'name' | REGEXP 'name_regexp' | IP 'address' | LIKE 'pattern'} [,...] | ANY | NONE]
[VALID UNTIL datetime]
[DEFAULT ROLE role [,...] | ALL | ALL EXCEPT role [,...] ]
[GRANTEES {user | role | ANY | NONE} [,...] [EXCEPT {user | role} [,...]]]
[SETTINGS variable [= value] [MIN [=] min_value] [MAX [=] max_value] [READONLY | WRITABLE] | PROFILE 'profile_name'] [,...]
要使用 ALTER USER
,您必须具有 ALTER USER 权限。
GRANTEES 子句
指定允许从该用户接收 权限 的用户或角色,前提是该用户也已使用 GRANT OPTION 授予所有必需的访问权限。GRANTEES
子句的选项
user
— 指定该用户可以向其授予权限的用户。role
— 指定该用户可以向其授予权限的角色。ANY
— 该用户可以向任何人授予权限。这是默认设置。NONE
— 该用户不能向任何人授予权限。
您可以使用 EXCEPT
表达式排除任何用户或角色。例如,ALTER USER user1 GRANTEES ANY EXCEPT user2
。这意味着如果 user1
具有使用 GRANT OPTION
授予的一些权限,则它将能够向除 user2
之外的任何人授予这些权限。
示例
将分配的角色设置为默认角色
ALTER USER user DEFAULT ROLE role1, role2
如果以前未将角色分配给用户,则 ClickHouse 会抛出异常。
将所有分配的角色设置为默认角色
ALTER USER user DEFAULT ROLE ALL
如果将来将角色分配给用户,它将自动成为默认角色。
将所有分配的角色设置为默认角色,但 role1
和 role2
除外
ALTER USER user DEFAULT ROLE ALL EXCEPT role1, role2
允许具有 john
帐户的用户将其权限授予具有 jack
帐户的用户
ALTER USER john GRANTEES jack;
向用户添加新的身份验证方法,同时保留现有的身份验证方法
ALTER USER user1 ADD IDENTIFIED WITH plaintext_password by '1', bcrypt_password by '2', plaintext_password by '3'
注意
- 较旧版本的 ClickHouse 可能不支持多种身份验证方法的语法。因此,如果 ClickHouse 服务器包含此类用户并降级到不支持它的版本,则此类用户将变得无法使用,并且某些与用户相关的操作将中断。为了顺利降级,必须在降级之前将所有用户设置为包含单个身份验证方法。或者,如果服务器在未执行正确程序的情况下进行了降级,则应删除有故障的用户。
- 出于安全原因,
no_password
不能与其他身份验证方法共存。因此,无法ADD
no_password
身份验证方法。以下查询将抛出错误
ALTER USER user1 ADD IDENTIFIED WITH no_password
如果要删除用户的身份验证方法并依赖 no_password
,则必须在以下替换表单中指定。
重置身份验证方法并添加查询中指定的身份验证方法(在没有 ADD 关键字的情况下,IDENTIFIED 的前导作用)
ALTER USER user1 IDENTIFIED WITH plaintext_password by '1', bcrypt_password by '2', plaintext_password by '3'
重置身份验证方法并保留最近添加的一个
ALTER USER user1 RESET AUTHENTICATION METHODS TO NEW