È possibile modificare il ruolo postgresql che un utente sta utilizzando durante l'interazione con postgres dopo la connessione iniziale?Cambia ruolo dopo la connessione al database
I database verranno utilizzati in un'applicazione Web e mi piacerebbe utilizzare le regole a livello di database su tabelle e schemi con pool di connessioni. Dalla lettura della documentazione postgresql sembra che io possa cambiare ruolo se mi connetto originariamente come utente con il ruolo di superuser, ma preferirei inizialmente connettermi come utente con permessi minimi e passare se necessario. Dover specificare la password dell'utente quando il passaggio va bene (in effetti preferirei farlo).
Cosa mi manca?
Aggiornamento: Ho provato sia SET ROLE
e SET SESSION AUTHORIZATION
come suggerito da @Milen tuttavia né il comando sembra funzionare se l'utente non è un superutente:
$ 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
ho provato entrambi i comandi senza alcun risultato, se l'utente si collega non è un superutente ricevo permesso negato errori. Ho aggiornato la domanda con ulteriori informazioni –
Credo che il tuo utente debba essere un membro del RUOLO che vuoi già impostare e avere la proprietà NOINHERITS sul suo utente in modo che non siano predefiniti. Allora dovresti essere intensificato e de-escalation. Ma devono già essere membri del RUOLO. – rfusca