| PostgreSQL: Das Offizielle Handbuch | ||||
|---|---|---|---|---|
| Zurück | Schnell zurück | Schnell nach vorne | Nach vorne | |
SET [ SESSION | LOCAL ] SESSION AUTHORIZATION benutzername SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT RESET SESSION AUTHORIZATION
Dieser Befehl setzt den Sitzungbenutzernamen und den aktuellen Benutzernamen der aktuellen SQL-Sitzung auf benutzername. Der Benutzername kann als Bezeichner oder als Zeichenkettenkonstante geschrieben werden. Mit diesem Befehl kann man sich zum Beispiel vorübergehend zu einem unprivilegierten Benutzer machen und später auf Superuser zurückschalten.
Der Sitzungsbenutzername wird am Anfang auf den vom Client verlangten Benutzernamen gesetzt (welcher möglicherweise authentifiziert wurde). Der aktuelle Benutzername ist normalerweise der gleiche, kann sich aber vorübergehend im Rahmen von „setuid“-Funktionen und ähnlichen Vorrichtungen ändern. Der aktuelle Benutzername ist der, der für die Prüfung der Zugriffsrechte herangezogen wird.
Der Sitzungsbenutzername kann nur geändert werden, wenn der anfängliche Sitzungsbenutzer (der authentifizierte Benutzer) das Superuser-Privileg hatte. Ansonsten wird dieser Befehl nur akzeptiert, wenn er den authentifizierten Benutzernamen angibt.
Die Optionen SESSION und LOCAL haben Sie selbe Bedeutung wie beim Befehl SET.
Die Formen DEFAULT und RESET setzen den Sitzungsbenutzernamen und den aktuellen Benutzernamen auf den ursprünglichen authentifizierten Benutzernamen zurück. Diese Formen können von jedem Benutzer ausgeführt werden.
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
Der SQL-Standard erlaubt einige andere Ausdrücke an der Stelle von benutzername, die in der Praxis nicht wichtig sind. PostgreSQL erlaubt die Bezeichnersyntax ("benutzername"), aber SQL nicht. Laut SQL ist es nicht erlaubt, diesen Befehl in einer Transaktion auszuführen; PostgreSQL macht diese Einschränkung nicht, weil es dazu keinen Grund gibt. Die Privilegien, die zur Ausführung dieses Befehls nötig sind, werden vom SQL-Standard der Implementierung überlassen.
| Zurück | Zum Anfang | Nach vorne |
| SET CONSTRAINTS | Nach oben | SET TRANSACTION |