SET SESSION
AUTHORIZATION
SET SESSION AUTHORIZATION — Initialise l'identifiant de
session de l'utilisateur et l'identifiant de l'utilisateur actuel
de la session en cours
Synopsis
SET [ SESSION | LOCAL ] SESSION AUTHORIZATION nom_utilisateur
SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT
RESET SESSION AUTHORIZATION
Description
Cette commande positionne l'identifiant de session de l'utilisateur
et celui de l'utilisateur courant pour le contexte de la session
SQL en cours à
nom_utilisateur
. Le nom de
l'utilisateur peut être un identifiant ou une chaîne littérale. En
utilisant cette commande, il est possible, par exemple, de devenir
temporairement un utilisateur non privilégié et de redevenir plus
tard superutilisateur.
L'identifiant de session de l'utilisateur est initialement
positionné au nom de l'utilisateur (éventuellement authentifié)
fourni par le client. L'identifiant de l'utilisateur courant est
habituellement identique à l'identifiant de session de
l'utilisateur mais il peut être temporairement modifié par le
contexte de fonctions « setuid » ou de mécanismes similaires ; il peut
aussi être changé par SET ROLE. L'identifiant de l'utilisateur
courant est essentiel à la vérification des permissions.
L'identifiant de session de l'utilisateur ne peut être changé que
si l'utilisateur de session initial (l'utilisateur authentifié) dispose des privilèges
superutilisateur. Dans le cas contraire, la commande n'est acceptée
que si elle fournit le nom de l'utilisateur authentifié.
Les modificateurs SESSION et LOCAL agissent de la même façon que la commande
standard SET.
Les formes DEFAULT et RESET réinitialisent les identifiants courant et de
session de l'utilisateur à ceux de l'utilisateur originellement
authentifié. Tout utilisateur peut les exécuter.
Exemples
SELECT SESSION_USER, CURRENT_USER;
session_user | current_user
--------------+--------------
peter | peter
SET SESSION AUTHORIZATION 'paul';
SELECT SESSION_USER, CURRENT_USER;
session_user | current_user
--------------+--------------
paul | paul
Compatibilité
Le standard SQL autorise l'apparition de quelques autres
expressions à la place de
nom_utilisateur
. Dans la pratique, ces
expressions ne sont pas importantes. PostgreSQL™ autorise la syntaxe de
l'identifiant ("nom_utilisateur") alors
que SQL ne le permet pas. SQL n'autorise pas l'exécution de cette
commande au cours d'une transaction ; PostgreSQL™ n'impose pas cette
restriction parce qu'il n'y a pas lieu de le faire. Les
modificateurs SESSION et LOCAL sont des extensions PostgreSQL™ tout comme la syntaxe
RESET.
Le standard laisse la définition des droits nécessaires à
l'exécution de cette commande à l'implantation.