Este problema não tem nada a ver com o banco de dados
postgres
. Em vez disso, você deseja manipular o catálogo do banco de dados atual. Cada banco de dados tem um catálogo de informações sobre todos os objetos no esquema pg_catalog
, e em formato compatível com os padrões no esquema information_schema
, portanto, você deve restringir o acesso àqueles para a função em questão e também para o public
função porque cada função também é membro dessa função: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;
No entanto, o sistema nem sempre respeita essa restrição geral, os catálogos existem por um motivo e fornecem funções importantes no banco de dados. Particularmente, as funções ainda podem ser executadas.
Em geral, você não quer mexer nos catálogos a menos que você realmente saiba o que está fazendo .