PostgreSQL fournit un ensemble de rôles prédéfinis
   qui permettent d'accéder à certaines fonctionnalités et informations
   privilégiées, couramment nécessaires. Les administrateurs (y compris les
   rôles qui ont le privilège CREATEROLE) peuvent
   octroyer (GRANT) ces rôles aux utilisateurs et/ou à
   d'autres rôles dans leur environnement, fournissant à ces utilisateurs un
   accès aux fonctionnalités et informations spécifiées.
  
Les rôles prédéfinis sont décrits dans Tableau 21.1. Notez que les autorisations spécifiques pour chacun des rôles peuvent changer à l'avenir à mesure que des fonctionnalités supplémentaires sont ajoutées. Les administrateurs doivent surveiller les notes de version pour les changements.
Tableau 21.1. Rôles prédéfinis
| Rôle | Accès autorisé | 
|---|---|
| pg_read_all_data | Lit toutes les données (tables, vues, séquences), comme si le
       rôle avait le droit SELECT sur ces objets, et le
       droit USAGE sur tous les schémas, même sans les
       avoir explicitement. Ce rôle n'a pas l'attribut
       BYPASSRLS de configuré. Si RLS est utilisé, un
       administrateur pourrait vouloir ajouter BYPASSRLS
       sur les rôles ayant cet accès. | 
| pg_write_all_data | Écrit toutes les données (tables, vues, séquences), comme si le
       rôle avait les droits INSERT,
       UPDATE, and DELETE sur ces
       objets, et le droit USAGE sur tous les schémas,
       même sans les avoir explicitement. Ce rôle n'a pas l'attribut
       BYPASSRLS de configuré. Si RLS est utilisé, un
       administrateur pourrait vouloir ajouter BYPASSRLS
       sur les rôles ayant cet accès. | 
| pg_read_all_settings | Lit toutes les variables de configuration, y compris celles normalement visibles des seuls superutilisateurs. | 
| pg_read_all_stats | Lit toutes les vues pg_stat_* et utilise plusieurs extensions relatives aux statistiques, y compris celles normalement visibles des seuls superutilisateurs. | 
| pg_database_owner | None. Membership consists, implicitly, of the current database owner. | 
| pg_stat_scan_tables | Exécute des fonctions de monitoring pouvant prendre des verrous
       ACCESS SHARE sur les tables, potentiellement
       pour une longue durée. | 
| pg_monitor | Lit et exécute plusieurs vues et fonctions de monitoring.
       Ce rôle est membre de pg_read_all_settings,
       pg_read_all_stats et
       pg_stat_scan_tables. | 
| pg_signal_backend | Envoie un signal à un autre processus serveur (par exemple pour annuler une requête ou fermer une session). | 
| pg_read_server_files | Autoriser la lecture de fichiers sur tous les emplacements accessibles par le serveur de bases de données avec COPY et les autres fonctions d'accès de fichiers. | 
| pg_write_server_files | Autoriser l'écriture de fichiers sur tous les emplacements accessibles par le serveur de bases de données avec COPY et les autres fonctions d'accès de fichiers. | 
| pg_execute_server_program | Autoriser l'exécution de programmes sur le serveur de bases de données en tant que l'utilisateur qui exécute le moteur de bases de données, avec COPY et les autres fonctions qui permettent l'exécution d'un programme sur le serveur. | 
| pg_checkpoint | Autoriser l'exécution de la commande
      CHECKPOINT. | 
| pg_maintain | Autoriser l'exécution de
       VACUUM,
       ANALYZE,
       CLUSTER,
       REFRESH MATERIALIZED VIEW,
       REINDEX,
       et LOCK TABLE sur
       toutes les relations, comme si le rôle avait le droit
       MAINTAIN sur ces objets, même sans l'avoir
       explicitement. | 
| pg_use_reserved_connections | Autorise l'utilisation des slots de connexion réservés via reserved_connections. | 
| pg_create_subscription | Donne le droit CREATE sur la base de données
      pour exécuter
      CREATE SUBSCRIPTION. | 
   Les rôles pg_monitor,
   pg_read_all_settings,
   pg_read_all_stats et
   pg_stat_scan_tables ont pour but de permettre aux
   administrateurs de configurer aisément un rôle en vue de superviser le
   serveur de base de données. Ils accordent un ensemble de privilèges
   permettant au rôle de lire plusieurs paramètres de configuration,
   statistiques et information système normalement réservés aux
   superutilisateurs.
  
   Le rôle pg_database_owner a un membre implicite, à savoir
   le propriétaire de la base de données en cours. Comme tout rôle, il peut être
   propriétaire des objets et recevoir des autorisations d'accès.  En
   conséquence, une fois que pg_database_owner a des droits
   dans une base modèle, chaque propriétaire d'une base créée à partir de ce
   modèle peut exercer ces droits.  pg_database_owner ne peut
   pas être un membre d'un autre rôle, et il ne peut pas avoir de membres non
   implicites. Au départ, ce rôle est le propriétaire du schéma
   public, pour que chaque propriétaire de base gouverne
   l'utilisation locale de ce schéma.
  
   Le rôle pg_signal_backend a pour but de permettre aux
   administrateurs d'autoriser des rôles de confiance mais non
   superutilisateurs à envoyer des signaux à d'autres processus. Actuellement,
   ce rôle active l'envoi de signaux pour annuler une requête exécutée par un
   autre processus ou pour terminer une session. Néanmoins, un utilisateur
   membre de ce rôle ne peut pas envoyer ce type de signaux à un processus
   appartenant à un superutilisateur. Voir Section 9.28.2.
  
   Les rôles pg_read_server_files,
   pg_write_server_files et
   pg_execute_server_program ont pour but de permettre aux
   administrateurs de disposer de rôles de confiance, mais non
   superutilisateur, capables d'accéder à des fichiers et d'exécuter des
   programmes sur le serveur de bases de données en tant que l'utilisateur qui
   exécute le moteur de bases de données. Comme ces rôles sont capables
   d'accéder à tout fichier sur le système de fichiers du serveur, ils
   contournent toutes les vérifications d'accès au niveau de la base de
   données lors d'accès directs aux fichiers. Ils peuvent utiliser cela pour
   obtenir un accès de niveau superutilisateur. De ce fait, une attention
   toute particulière doit être prise lors de l'affectation de ces rôles aux
   utilisateurs.
  
On portera une attention particulière en accordant ces rôles afin de garantir qu'ils ne sont utilisés qu'en cas de nécessiter et en comprenant que ces rôles donnent accès à des informations importantes.
   Les administrateurs peuvent autoriser l'accès à ces rôles aux utilisateurs en utilisant
   la commande GRANT :
   
GRANT pg_signal_backend TO admin_user;