Skip to main content
При выполнении SET ROLE в SQL Console ClickHouse Cloud может показаться, что роль меняется для одного запроса, а для следующего возвращается к прежней. Если разрешения должны сохраняться между запросами и сеансами, используйте роль SQL Console, назначенную пользователю.

Симптомы

Возможны один или несколько из следующих симптомов:
  • После выполнения SET ROLE sql_console_developer последующие запросы по-прежнему выполняются с ролью sql_console_read_only.
  • Результаты currentRoles, enabledRoles и defaultRoles различаются от запроса к запросу.
  • При совместном выполнении SET ROLE и другого запроса выбранная роль сохраняется не всегда.
  • SHOW GRANTS выводит ожидаемые роли, но их разрешения не действуют.
Проверить текущего пользователя и роли можно с помощью:

Почему это происходит

SQL Console отправляет запросы через HTTP-соединения без сохранения состояния в сервис ClickHouse Cloud с несколькими репликами. Не гарантируется, что последовательные запросы будут использовать одно и то же соединение или реплику. SET ROLE изменяет роли, включенные для текущего сеанса. Это состояние сеанса не сохраняется для последующих запросов SQL Console. Поэтому последующий запрос может выполняться без роли, включенной предыдущим запросом. Поэтому не используйте SET ROLE в качестве постоянного механизма контроля доступа в SQL Console.

Как работают роли пользователей в SQL Console

Когда пользователь открывает SQL Console, ClickHouse Cloud создаёт пользователя базы данных по следующему соглашению об именовании:
ClickHouse Cloud также проверяет наличие роли базы данных, имя которой соответствует следующему соглашению:
Когда такая роль существует, ClickHouse Cloud назначает её соответствующему пользователю SQL Console. Это поддерживаемый способ предоставить постоянные настраиваемые разрешения отдельному пользователю SQL Console.

Настройка постоянных разрешений

Выполните следующие команды от имени пользователя с административными привилегиями в сервисе, например пользователя SQL Console с ролью sql_console_admin или другого пользователя с привилегией ACCESS MANAGEMENT.
1

Создание пользовательской роли

В следующем примере создаётся пользовательская роль sql_console_developer, которой предоставляются разрешения для my_database:
sql_console_developer — пример роли, а не встроенная роль ClickHouse Cloud. Вместо неё можно использовать существующую пользовательскую роль с необходимыми пользователю разрешениями.
2

Создание роли SQL Console для пользователя

Создайте роль, имя которой содержит точный адрес электронной почты пользователя:
Обратные кавычки обязательны, поскольку имя роли содержит специальные символы.
3

Предоставление пользовательской роли

Предоставьте нужную роль роли SQL Console для пользователя:
При необходимости можно предоставить несколько ролей:
4

Начало нового сеанса SQL Console

Попросите пользователя выйти из SQL Console и снова войти в неё либо обновить вкладку браузера. В новом сеансе ClickHouse Cloud применяет sql-console-role:user@example.com к sql-console:user@example.com; оператор SET ROLE не требуется.Проверьте активные роли:
Результаты должны включать разрешения, предоставленные через sql-console-role:user@example.com.

Не изменяйте управляемые роли

Не изменяйте sql_console_admin и sql_console_read_only, чтобы назначить настраиваемые разрешения. ClickHouse Cloud управляет этими встроенными ролями. Для назначения разрешений отдельным пользователям используйте sql-console-role:<email>. Примеры общего управления ролями см. в разделе Распространённые запросы для управления доступом.
Последнее изменение 14 августа 2026 г.