Skip to main content
Ao executar SET ROLE no SQL Console do ClickHouse Cloud, a função pode parecer mudar para uma consulta e, em seguida, ser revertida na próxima. Use uma função do SQL Console específica para cada usuário quando as permissões precisarem persistir entre consultas e sessões.

Sintomas

Você pode observar um ou mais dos seguintes sintomas:
  • Após executar SET ROLE sql_console_developer, as consultas subsequentes ainda são executadas com sql_console_read_only.
  • Os resultados de currentRoles, enabledRoles e defaultRoles variam entre as consultas.
  • Executar SET ROLE junto com outra consulta não mantém de forma consistente a função selecionada.
  • SHOW GRANTS lista as funções esperadas, mas as permissões delas não estão ativas.
Você pode inspecionar o usuário e as funções atuais com:

Por que isso acontece

O SQL Console envia consultas por conexões HTTP sem estado para um serviço ClickHouse Cloud com várias réplicas. Não há garantia de que consultas consecutivas usem a mesma conexão ou réplica. SET ROLE altera as funções habilitadas na sessão atual. Ele não mantém esse estado de sessão para solicitações posteriores do SQL Console. Portanto, uma consulta subsequente pode ser executada sem a função habilitada por uma solicitação anterior. Por esse motivo, não use SET ROLE como um mecanismo persistente de controle de acesso no SQL Console.

Como funcionam as funções de usuário do SQL Console

Quando um usuário abre o SQL Console, o ClickHouse Cloud provisiona um usuário de banco de dados seguindo a seguinte convenção de nomenclatura:
O ClickHouse Cloud também verifica se há uma função de banco de dados cujo nome segue a convenção a seguir:
Quando essa função existe, o ClickHouse Cloud a atribui ao usuário correspondente do SQL Console. Essa é a maneira compatível de conceder permissões personalizadas persistentes a um usuário específico do SQL Console.

Configurar permissões persistentes

Execute as instruções a seguir como um usuário com privilégios administrativos no serviço, como um usuário do SQL Console com a função sql_console_admin ou outro usuário com o privilégio ACCESS MANAGEMENT.
1

Criar a função personalizada

O exemplo a seguir cria uma função personalizada sql_console_developer e concede a ela permissões em my_database:
sql_console_developer é uma função de exemplo, não uma função integrada do ClickHouse Cloud. Como alternativa, você pode usar uma função personalizada existente com as permissões de que o usuário precisa.
2

Criar a função do SQL Console por usuário

Crie uma função cujo nome contenha o endereço de e-mail exato do usuário:
Os backticks são obrigatórios porque o nome da função contém caracteres especiais.
3

Conceder a função personalizada

Conceda a função desejada à função do SQL Console por usuário:
Você pode conceder várias funções, se necessário:
4

Iniciar uma nova sessão do SQL Console

Peça ao usuário para sair e entrar novamente no SQL Console ou atualizar a aba do navegador. Na nova sessão, o ClickHouse Cloud aplica sql-console-role:user@example.com a sql-console:user@example.com; não é necessária nenhuma instrução SET ROLE.Verifique as funções ativas:
Os resultados devem incluir as permissões concedidas por sql-console-role:user@example.com.

Evite modificar funções gerenciadas

Não modifique sql_console_admin nem sql_console_read_only para conceder permissões personalizadas. O ClickHouse Cloud gerencia essas funções integradas. Em vez disso, use sql-console-role:<email> para definir permissões por usuário. Para exemplos gerais de gerenciamento de funções, consulte Consultas comuns de gerenciamento de acesso.
Última modificação em 14 de agosto de 2026