Cria novas roles. Uma role é um conjunto de privilégios. Um usuário ao qual uma role é atribuída recebe todos os privilégios dessa role.
Sintaxe:
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'] [,...]
Um usuário pode ter várias roles atribuídas. Os usuários podem aplicar suas roles atribuídas em combinações arbitrárias por meio da instrução SET ROLE. O escopo final dos privilégios é a combinação de todos os privilégios de todas as roles aplicadas. Se um usuário tiver privilégios concedidos diretamente à sua conta de usuário, eles também serão combinados com os privilégios concedidos pelas roles.
Um usuário pode ter roles padrão, que são aplicadas no login. Para definir roles padrão, use a instrução SET DEFAULT ROLE ou a instrução ALTER USER.
Para revogar uma role, use a instrução REVOKE.
Para excluir uma role, use a instrução DROP ROLE. A role excluída é automaticamente revogada de todos os usuários e roles aos quais foi atribuída.
CREATE ROLE accountant;
GRANT SELECT ON db.* TO accountant;
Esta sequência de consultas cria a role accountant, que tem o privilégio de ler dados do banco de dados db.
Atribuindo a role ao usuário mira:
GRANT accountant TO mira;
Depois que a role é atribuída, o usuário pode ativá-la e executar as consultas permitidas. Por exemplo:
SET ROLE accountant;
SELECT * FROM db.*;
Última modificação em 10 de junho de 2026