Est-il possible de modifier le rôle postgresql qu'un utilisateur utilise lorsqu'il interagit avec postgres après la connexion initiale? La ou les bases de données seront utilisées dans une application Web et j'utiliserai des règles de niveau de base de données sur les tables et les schémas avec le regroupement de connexions. A la lecture de la documentation postgresql, il semble que je puisse changer de rôle si je me connectais initialement en tant qu'utilisateur avec le rôle de superutilisateur, mais je préférerais initialement me connecter en tant qu'utilisateur avec un minimum d'autorisations et passer au besoin. Avoir à spécifier le mot de passe de l'utilisateur lors du changement serait bien (en fait je le préfère).Rôle de commutateur après la connexion à la base de données
Qu'est-ce qui me manque?
Mise à jour: J'ai essayé à la fois SET ROLE
et SET SESSION AUTHORIZATION
comme suggéré par @Milen cependant ni commande semble fonctionner si l'utilisateur n'est pas un super-utilisateur:
$ 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
J'ai essayé deux commandes en vain, si l'utilisateur de connexion est pas un super-utilisateur j'obtenir la permission des erreurs a nié. J'ai mis à jour la question avec des informations supplémentaires –
Je crois que votre utilisateur doit être membre des ROLES que vous voulez déjà définir et avoir la propriété NOINHERITS sur leur utilisateur afin qu'ils ne soient pas par défaut. Ensuite, vous devriez augmenter et désamorcer. Mais ils doivent déjà être membres du ROLE. – rfusca