Ce problème n'a rien à voir avec la base de données postgres
. Au lieu de cela, vous souhaitez manipuler le catalogue de la base de données actuelle. Chaque base de données possède un catalogue d'informations sur tous les objets du schéma pg_catalog
, et sous une forme conforme aux normes dans le schéma information_schema
, vous devez donc restreindre l'accès à ceux pour le rôle en question et aussi pour le public
rôle car chaque rôle est également membre de ce rôle :
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;
Cependant, le système ne respecte pas toujours cette restriction générale, les catalogues sont là pour une raison et fournissent des fonctions importantes dans la base de données. En particulier, les fonctions peuvent encore s'exécuter.
En général, vous ne voulez pas jouer avec les catalogues à moins que vous ne sachiez vraiment ce que vous faites .