Обсуждение: postgres (superuser) cannot connect to database

Поиск
Список
Период
Сортировка

postgres (superuser) cannot connect to database

От
Holger Jakobs
Дата:
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.

Best Regards,

Holger


-- 
Holger Jakobs, Bergisch Gladbach, Tel. +49-178-9759012


Вложения

Re: postgres (superuser) cannot connect to database

От
Laurenz Albe
Дата:
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



Re: postgres (superuser) cannot connect to database

От
Tom Lane
Дата:
Holger Jakobs <holger@jakobs.com> writes:
> How come a user who has issued "set role to postgres", so that the 
> current user is postgres, cannot connect to a database?

\c makes a fresh connection to the server.  SET ROLE in your old
session will not carry over to that (nor any other session state).

            regards, tom lane