¿Es posible cambiar el rol de postgresql que usa un usuario cuando interactúa con postgres después de la conexión inicial?Cambiar el rol después de conectarse a la base de datos
La (s) base (s) de datos se usarán en una aplicación web y me gustaría emplear reglas de nivel de base de datos en tablas y esquemas con agrupación de conexiones. Después de leer la documentación de postgresql, parece que puedo cambiar las funciones si me conecto originalmente como usuario con el rol de superusuario, pero preferiría conectarme inicialmente como usuario con permisos mínimos y cambiar de ser necesario. Tener que especificar la contraseña del usuario cuando se cambia estaría bien (de hecho, lo preferiría).
¿Qué me estoy perdiendo?
actualización: He intentado tanto SET ROLE
y SET SESSION AUTHORIZATION
según lo sugerido por @Milen Sin embargo, ni comando parece funcionar si el usuario no es un superusuario:
$ psql -U test
psql (8.4.4)
Type "help" for help.
test=> \du test
List of roles
Role name | Attributes | Member of
-----------+------------+----------------
test | | {connect_only}
test=> \du test2
List of roles
Role name | Attributes | Member of
-----------+------------+----------------
test2 | | {connect_only}
test=> set role test2;
ERROR: permission denied to set role "test2"
test=> \q
He intentado ambos comandos en vano, si el usuario que conecta no es un superusuario, obtengo los errores de permiso denegado. He actualizado la pregunta con información adicional –
Creo que su usuario debe ser miembro de los ROLES que ya desea establecer y tener la propiedad NOINHERITS en su usuario para que no se activen de manera predeterminada. Entonces deberías escalar y desescalar. Pero tienen que ser un miembro del PAPEL ya. – rfusca