On Wed, 2022-11-23 at 13:41 +0100, Holger Jakobs wrote:
> How come a user who has issued "set role to postgres", so that the
> current user is postgres, cannot connect to a database?
>
> Are superuser rights not sufficient?
>
> student@[local]:5434//~:=# \c einkauf
> Verbindung zum Server auf Socket »/var/run/postgresql/.s.PGSQL.5434«
> fehlgeschlagen: FATAL: keine Berechtigung für Datenbank »einkauf«
> DETAIL: Benutzer hat das CONNECT-Privileg nicht.
> Vorherige Verbindung wurde behalten
> student@[local]:5434//~:=# grant connect on database einkauf to postgres;
> GRANT
> student@[local]:5434//~:=# \c einkauf
> Sie sind jetzt verbunden mit der Datenbank »einkauf« als Benutzer »student«.
> student@[local]:5434//einkauf:=>
>
> Who can explain this? It's version 15 I'm using for the first time,
> haven't checked with oder versions.
PostgreSQL doesn't use the current role for the new connection, but the
role you used to authenticate originally.
See \conninfo or "SELECT session_user;" to see that role.
Yours,
Laurenz Albe