Me encontré con un problema de herencia de roles muy molesto con PostgreSQL. Simplemente no se comporta como debería según el documentation.¿La herencia de funciones de PostgreSQL no funciona?
Me gustaría tener un rol maestro y otorgar sus permisos a los usuarios recién creados. Estos usuarios deben heredar los permisos sin emitir SET ROLE
manualmente.
CREATE ROLE testrole NOSUPERUSER INHERIT CREATEDB NOCREATEROLE;
CREATE ROLE testuser LOGIN NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE;
GRANT testrole TO testuser;
Ahora, después de lo conecto como testuser
, me sale el siguiente:
postgres=> CREATE DATABASE foobar;
ERROR: permission denied to create database
postgres=> SET ROLE testrole;
SET
postgres=> CREATE DATABASE foobar;
CREATE DATABASE
De acuerdo con los documentos relacionados anteriormente (debido a la opción INHERIT), el SET ROLE
no debería ser necesaria.
¿Qué me falta aquí?