Перейти к основному содержанию
Перейти к основному содержанию

CREATE ROLE

Создаёт новые роли. Роль — это набор привилегий. Пользователь, которому назначена роль, получает все привилегии этой роли.

Синтаксис:

CREATE ROLE [IF NOT EXISTS | OR REPLACE] name1 [, name2 [,...]] [ON CLUSTER cluster_name]
    [IN access_storage_type]
    [SETTINGS variable [= value] [MIN [=] min_value] [MAX [=] max_value] [CONST|READONLY|WRITABLE|CHANGEABLE_IN_READONLY] | PROFILE 'profile_name'] [,...]

Управление ролями

Пользователю может быть назначено несколько ролей. Пользователи могут применять назначенные им роли в произвольных комбинациях с помощью оператора SET ROLE. Итоговый набор привилегий представляет собой объединение всех привилегий всех применённых ролей. Если пользователю были выданы привилегии непосредственно на его учётную запись, они также объединяются с привилегиями, предоставленными ролями.

У пользователя могут быть роли по умолчанию, которые применяются при входе в систему. Чтобы задать роли по умолчанию, используйте оператор SET DEFAULT ROLE или оператор ALTER USER.

Чтобы отозвать роль, используйте оператор REVOKE.

Чтобы удалить роль, используйте оператор DROP ROLE. Удалённая роль автоматически отзывается у всех пользователей и ролей, которым она была назначена.

Примеры

CREATE ROLE accountant;
GRANT SELECT ON db.* TO accountant;

Эта последовательность запросов создаёт роль accountant с правом чтения данных из базы данных db.

Назначение роли пользователю mira:

GRANT accountant TO mira;

После назначения роли пользователь может применить эту роль и выполнить разрешённые запросы. Например:

SET ROLE accountant;
SELECT * FROM db.*;