Réponses:
Le mot clé PUBLIC indique que les privilèges doivent être accordés à tous les rôles, y compris ceux qui pourraient être créés ultérieurement. PUBLIC peut être considéré comme un groupe implicitement défini qui inclut toujours tous les rôles. Tout rôle particulier aura la somme des privilèges qui lui sont directement accordés, des privilèges accordés à tout rôle dont il est actuellement membre et des privilèges accordés à PUBLIC.
Bien que cela soit vrai, ce n'est pas l'image complète. Public agit également comme un rôle implicite auquel d'autres rôles appartiennent et qui a ses propres autorisations qui ne sont pas toujours reflétées et signalées et qui sont héritées.
Par défaut, il donne l'autorisation de créer sur le schéma public. lorsque vous ne supprimez pas toutes les autres étapes correctes pour créer un utilisateur en lecture seule, cet utilisateur peut également créer de nouveaux objets dans le schéma public et, en raison de la propriété, y mettre des données. Pour éviter cela
REVOKE ALL ON SCHEMA public FROM PUBLIC;
De même, il donne également l'autorisation au niveau de la base de données, de supprimer l'utilisation
REVOKE ALL ON DATABASE all_database FROM PUBLIC;
Bon article ici: https://wiki.postgresql.org/images/d/d1/Managing_rights_in_postgresql.pdf