Musisz zrozumieć, że użytkownicy PostgreSQL to dla klastra bazy danych. @Michael już pokazuje, jak uzyskać listę tych.
Tak więc, o ile nie ograniczysz uprawnień dla konkretnych baz danych jawnie za pomocą REVOKE
i GRANT
, wszyscy użytkownicy w klastrze mają podstawowy dostęp do dowolnej bazy danych w klastrze.
Aby ustalić, czy określony użytkownik rzeczywiście ma pewien przywilej ('Connect') do bazy danych:
has_database_privilege(user, database, privilege)
Więcej o privilege functions in the manual.
Aby określić wszystkie szczególne przywileje dla konkretnego bazie:
SELECT datname, datacl
FROM pg_database
WHERE datname = 'mydb';
Otrzymasz NULL
dla datacl
jeśli stosuje się żadnych szczególnych ograniczeń.
Poza tym można ograniczyć dostęp do każdej bazy danych i na użytkownika w pliku pg_hba.conf
. To na niższym poziomie. Użytkownik nie może się połączyć, jeśli nie pozwoli mu na to pg_hba.conf
, nawet jeśli sama baza danych umożliwi dostęp.
@ Michael, dziękuję za pomoc. –
Nie ma za co. –