Questo problema non ha nulla a che fare con il database postgres
. Invece, vuoi manipolare il catalogo della banca dati attuale. Ogni database ha un catalogo di informazioni su tutti gli oggetti nello schema pg_catalog
e in forma conforme agli standard nello schema information_schema
, quindi dovresti limitare l'accesso a quelli per il ruolo in questione e anche al public
ruolo perché ogni ruolo è anche membro di quel ruolo:
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;
Tuttavia, il sistema non rispetta sempre questa restrizione generalizzata, i cataloghi esistono per un motivo e forniscono importanti funzioni nel database. In particolare le funzioni possono ancora essere eseguite.
In generale, non vuoi giocherellare con i cataloghi a meno che non sai davvero cosa stai facendo .