Este problema no tiene nada que ver con la base de datos postgres
. En su lugar, desea manipular el catálogo de la base de datos actual. Cada base de datos tiene un catálogo de información sobre todos los objetos en el esquema pg_catalog
y en forma compatible con los estándares en el esquema information_schema
, por lo que debe restringir el acceso a aquellos para el rol en cuestión y también para el public
rol porque cada rol también es miembro de ese rol:
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;
Sin embargo, el sistema no siempre cumple con esta restricción generalizada, los catálogos están ahí por una razón y brindan funciones importantes en la base de datos. En particular, las funciones aún pueden ejecutarse.
En general, no querrá jugar con los catálogos a menos que realmente sepa lo que está haciendo. .