Pular para o conteúdo principal
Altera contas de usuário no ClickHouse. Sintaxe:
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']} [VALID UNTIL datetime]
    [, {[{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} [,...]]]
    [DROP ALL PROFILES]
    [DROP ALL SETTINGS]
    [DROP SETTINGS variable [,...] ]
    [DROP PROFILES 'profile_name' [,...] ]
    [ADD|MODIFY SETTINGS variable [=value] [MIN [=] min_value] [MAX [=] max_value] [READONLY|WRITABLE|CONST|CHANGEABLE_IN_READONLY] [,...] ]
    [ADD PROFILES 'profile_name' [,...] ]
Para usar ALTER USER, é necessário ter o privilégio ALTER USER.

Cláusula GRANTEES

Especifica os usuários ou funções que podem receber privilégios deste usuário, desde que ele também tenha todas as permissões necessárias concedidas com GRANT OPTION. Opções da cláusula GRANTEES:
  • user — Especifica um usuário ao qual este usuário pode conceder privilégios.
  • role — Especifica uma função à qual este usuário pode conceder privilégios.
  • ANY — Este usuário pode conceder privilégios a qualquer usuário ou função. É a configuração padrão.
  • NONE — Este usuário não pode conceder privilégios a nenhum usuário ou função.
Você pode excluir qualquer usuário ou função usando a expressão EXCEPT. Por exemplo, ALTER USER user1 GRANTEES ANY EXCEPT user2. Isso significa que, se user1 tiver privilégios concedidos com GRANT OPTION, ele poderá concedê-los a qualquer usuário ou função, exceto user2.

Exemplos

Defina as funções atribuídas como padrão:
ALTER USER user DEFAULT ROLE role1, role2
Se nenhuma função tiver sido atribuída previamente a um usuário, o ClickHouse lança uma exceção. Defina como padrão todas as funções atribuídas:
ALTER USER user DEFAULT ROLE ALL
Se uma função for atribuída a um usuário no futuro, ela se tornará padrão automaticamente. Defina como padrão todas as funções atribuídas, exceto role1 e role2:
ALTER USER user DEFAULT ROLE ALL EXCEPT role1, role2
Permite que o usuário da conta john conceda seus privilégios ao usuário da conta jack:
ALTER USER john GRANTEES jack;
Adiciona novos métodos de autenticação ao usuário, mantendo os métodos existentes:
ALTER USER user1 ADD IDENTIFIED WITH plaintext_password by '1', bcrypt_password by '2', plaintext_password by '3'
Observações:
  1. Versões mais antigas do ClickHouse podem não oferecer suporte à sintaxe de vários métodos de autenticação. Portanto, se o servidor ClickHouse contiver esses usuários e passar por downgrade para uma versão que não ofereça esse suporte, esses usuários se tornarão inutilizáveis, e algumas operações relacionadas a usuários deixarão de funcionar. Para fazer o downgrade corretamente, é necessário configurar todos os usuários para que tenham um único método de autenticação antes do downgrade. Como alternativa, se o servidor tiver passado por downgrade sem o procedimento adequado, os usuários com problema deverão ser removidos.
  2. no_password não pode coexistir com outros métodos de autenticação por motivos de segurança. Por isso, não é possível ADD um método de autenticação no_password. A consulta abaixo gerará um erro:
ALTER USER user1 ADD IDENTIFIED WITH no_password
Se você quiser remover os métodos de autenticação de um usuário e usar no_password, deverá especificar isso na forma de substituição abaixo. Redefine os métodos de autenticação e adiciona os especificados na consulta (efeito de um IDENTIFIED inicial sem a palavra-chave ADD):
ALTER USER user1 IDENTIFIED WITH plaintext_password by '1', bcrypt_password by '2', plaintext_password by '3'
Redefina os métodos de autenticação e mantenha o mais recentemente adicionado:
ALTER USER user1 RESET AUTHENTICATION METHODS TO NEW

Cláusula VALID UNTIL

Permite especificar a data de expiração e, opcionalmente, o horário de um método de autenticação. Ela aceita uma string como parâmetro. Recomenda-se usar o formato YYYY-MM-DD [hh:mm:ss] [timezone] para data e hora. Por padrão, esse parâmetro é igual a 'infinity'. A cláusula VALID UNTIL só pode ser especificada junto com um método de autenticação, exceto no caso em que nenhum método de autenticação tenha sido especificado na consulta. Nesse cenário, a cláusula VALID UNTIL será aplicada a todos os métodos de autenticação existentes. Exemplos:
  • 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''
Última modificação em 10 de junho de 2026