Ten problem nie ma nic wspólnego z bazą danych postgres
. Zamiast tego chcesz manipulować katalogiem bieżącej bazy danych. Każda baza danych zawiera katalog informacji o wszystkich obiektach w schemacie pg_catalog
oraz w formie zgodnej ze standardami w schemacie information_schema
, więc powinieneś ograniczyć dostęp do tych dla danej roli, a także do public
rola, ponieważ każda rola jest również członkiem tej roli:
REVOKE ALL PRIVILEGES ON SCHEMA pg_catalog FROM newrole;
REVOKE ALL PRIVILEGES ON SCHEMA pg_catalog FROM public;
REVOKE ALL PRIVILEGES ON SCHEMA information_schema FROM newrole;
REVOKE ALL PRIVILEGES ON SCHEMA information_schema FROM public;
Jednak system nie zawsze przestrzega tego ogólnego ograniczenia, katalogi są tam nie bez powodu i zapewniają ważne funkcje w bazie danych. W szczególności funkcje mogą nadal działać.
Ogólnie rzecz biorąc, nie chcesz bawić się katalogami, chyba że naprawdę wiesz, co robisz .