Crea nuevos roles. Un rol es un conjunto de privilegios. Un usuario al que se le asigna un rol obtiene todos los privilegios de ese rol.
Sintaxis:
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'] [,...]
A un usuario se le pueden asignar varios roles. Los usuarios pueden activar sus roles asignados en combinaciones arbitrarias mediante la sentencia SET ROLE. El alcance final de los privilegios es la combinación de todos los privilegios de todos los roles activados. Si un usuario tiene privilegios otorgados directamente a su cuenta de usuario, estos también se combinan con los privilegios otorgados por los roles.
Un usuario puede tener roles predeterminados que se aplican al iniciar sesión. Para establecer roles predeterminados, use la sentencia SET DEFAULT ROLE o la sentencia ALTER USER.
Para revocar un rol, use la sentencia REVOKE.
Para eliminar un rol, use la sentencia DROP ROLE. El rol eliminado se revoca automáticamente de todos los usuarios y roles a los que se había asignado.
CREATE ROLE accountant;
GRANT SELECT ON db.* TO accountant;
Esta secuencia de consultas crea el rol accountant, que tiene el privilegio de leer datos de la base de datos db.
Asignación del rol al usuario mira:
GRANT accountant TO mira;
Una vez asignado el rol, el usuario puede usarlo y ejecutar las consultas permitidas. Por ejemplo:
SET ROLE accountant;
SELECT * FROM db.*;
Última modificación el 10 de junio de 2026