Me gustaría dar a un usuario todos los permisos en una base de datos sin convertirlo en administrador. La razón por la que quiero hacer eso es que, en este momento, DEV y PROD son bases de datos diferentes en el mismo clúster, por lo que no quiero que un usuario pueda cambiar objetos de producción, pero debe poder cambiar objetos en DEV.
Lo intenté:
grant ALL on database MY_DB to group MY_GROUP;
pero no parece dar ningún permiso.
Entonces intenté:
grant all privileges on schema MY_SCHEMA to group MY_GROUP;
y parece que me da permiso para crear objetos pero no para consultar \ eliminar objetos en ese esquema que pertenecen a otros usuarios
Podría continuar dando permiso a USAGE al usuario en MY_SCHEMA, pero luego se quejaría de no tener permisos sobre la mesa ...
Entonces, supongo que mi pregunta es: ¿hay alguna manera fácil de otorgar todos los permisos a un usuario en una base de datos?
Estoy trabajando en PostgreSQL 8.1.23.
fuente
ON DATABASE
suena poderoso, pero no hace mucho. Es solo un comienzo. No otorga ningún privilegio sobre los objetos contenidos.En PostgreSQL 9.0+ haría lo siguiente:
Si desea habilitar esto también para las relaciones recién creadas, configure los permisos predeterminados:
Sin embargo, al ver que usa 8.1, debe codificarlo usted mismo:
Esto establecerá los privilegios en todas las relaciones: tablas, vistas, índices, secuencias, etc. Si desea restringir eso, filtre
pg_class.relkind
. Ver los documentos de pg_class para más detalles.Debe ejecutar esta función como superusuario y tan regular como lo requiera su aplicación. Una opción sería empaquetar esto en un trabajo cron que se ejecuta todos los días o cada hora.
fuente
Hice lo siguiente para agregar un rol 'eSumit' en la base de datos PostgreSQL 9.4.15 y otorgar todos los permisos para este rol:
También verifiqué las entradas de pg_table a través de:
seleccione * de pg_roles;
Instantánea de consultas de la base de datos:
fuente