Skip to main content
Al ejecutar SET ROLE en la SQL Console de ClickHouse Cloud, el rol puede parecer que cambia para una consulta y luego vuelve al anterior en la siguiente. Use un rol de SQL Console por usuario si necesita que los permisos se mantengan entre consultas y sesiones.

Síntomas

Es posible que observe uno o varios de los siguientes síntomas:
  • Después de ejecutar SET ROLE sql_console_developer, las consultas posteriores siguen ejecutándose con sql_console_read_only.
  • Los resultados de currentRoles, enabledRoles y defaultRoles varían entre consultas.
  • Ejecutar SET ROLE junto con otra consulta no siempre conserva el rol seleccionado.
  • SHOW GRANTS muestra los roles esperados, pero sus permisos no están activos.
Puede consultar el usuario y los roles actuales con:

Por qué ocurre esto

La SQL Console envía consultas a través de conexiones HTTP sin estado a un servicio de ClickHouse Cloud con varias réplicas. No se garantiza que las consultas consecutivas utilicen la misma conexión o réplica. SET ROLE modifica los roles habilitados para la sesión actual. No conserva ese estado de sesión para solicitudes posteriores de la SQL Console. Por lo tanto, una consulta posterior puede ejecutarse sin el rol habilitado por una solicitud anterior. Por este motivo, no use SET ROLE como mecanismo persistente de control de acceso en la SQL Console.

Cómo funcionan los roles de usuario de SQL Console

Cuando un usuario abre SQL Console, ClickHouse Cloud crea un usuario de base de datos con la siguiente convención de nomenclatura:
ClickHouse Cloud también comprueba si existe un rol de base de datos cuyo nombre siga la siguiente convención:
Cuando existe ese rol, ClickHouse Cloud se lo asigna al usuario correspondiente de SQL Console. Esta es la forma admitida de otorgar permisos personalizados persistentes a un usuario concreto de SQL Console.

Configurar permisos persistentes

Ejecute las siguientes sentencias como un usuario con privilegios administrativos en el servicio, por ejemplo, un usuario de SQL Console con el rol sql_console_admin u otro usuario con el privilegio ACCESS MANAGEMENT.
1

Crear el rol personalizado

El siguiente ejemplo crea un rol personalizado, sql_console_developer, y le otorga permisos sobre my_database:
sql_console_developer es un rol de ejemplo, no un rol integrado de ClickHouse Cloud. También puede utilizar un rol personalizado existente que tenga los permisos que necesita el usuario.
2

Crear el rol de SQL Console por usuario

Cree un rol cuyo nombre contenga la dirección de correo electrónico exacta del usuario:
Las comillas invertidas son obligatorias porque el nombre del rol contiene caracteres especiales.
3

Otorgar el rol personalizado

Otorgue el rol deseado al rol de SQL Console por usuario:
Puede otorgar varios roles cuando sea necesario:
4

Iniciar una nueva sesión de SQL Console

Pida al usuario que cierre sesión y vuelva a iniciarla en SQL Console, o que actualice la pestaña del navegador. En la nueva sesión, ClickHouse Cloud aplica sql-console-role:user@example.com a sql-console:user@example.com; no se requiere ninguna sentencia SET ROLE.Verifique los roles activos:
Los resultados deben incluir los permisos otorgados mediante sql-console-role:user@example.com.

Evite modificar los roles administrados

No modifique sql_console_admin ni sql_console_read_only para conceder permisos personalizados. ClickHouse Cloud administra estos roles integrados. En su lugar, use sql-console-role:<email> para asignar permisos por usuario. Para consultar ejemplos generales de administración de roles, vea Consultas comunes de administración de acceso.
Última modificación el 14 de agosto de 2026