ALTER DEFAULT PRIVILEGES — définit les droits d'accès par défaut
ALTER DEFAULT PRIVILEGES
    [ FOR { ROLE | USER } rôle_cible [, ...] ]
    [ IN SCHEMA nom_schéma [, ...] ]
    grant_ou_revoke_réduit
où grant_ou_revoke_réduit
peut être :
GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER | MAINTAIN }
    [, ...] | ALL [ PRIVILEGES ] }
    ON TABLES
    TO { [ GROUP ] nom_rôle | PUBLIC } [, ...] [ WITH GRANT OPTION ]
GRANT { { USAGE | SELECT | UPDATE }
    [, ...] | ALL [ PRIVILEGES ] }
    ON SEQUENCES
    TO { [ GROUP ] nom_rôle | PUBLIC } [, ...] [ WITH GRANT OPTION ]
GRANT { EXECUTE | ALL [ PRIVILEGES ] }
    ON FUNCTIONS
    TO { [ GROUP ] nom_rôle | PUBLIC } [, ...] [ WITH GRANT OPTION ]
GRANT { USAGE | ALL [ PRIVILEGES ] }
    ON TYPES
    TO { [ GROUP ] nom_rôle | PUBLIC } [, ...] [ WITH GRANT OPTION ]
GRANT { { USAGE | CREATE }
    [, ...] | ALL [ PRIVILEGES ] }
    ON SCHEMAS
    TO { [ GROUP ] nom_rôle | PUBLIC } [, ...] [ WITH GRANT OPTION ]
REVOKE [ GRANT OPTION FOR ]
    { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER | MAINTAIN }
    [, ...] | ALL [ PRIVILEGES ] }
    ON TABLES
    FROM { [ GROUP ] nom_rôle | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]
REVOKE [ GRANT OPTION FOR ]
    { { USAGE | SELECT | UPDATE }
    [, ...] | ALL [ PRIVILEGES ] }
    ON SEQUENCES
    FROM { [ GROUP ] nom_rôle | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]
REVOKE [ GRANT OPTION FOR ]
    { EXECUTE | ALL [ PRIVILEGES ] }
    ON FUNCTIONS
    FROM { [ GROUP ] nom_rôle | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]
REVOKE [ GRANT OPTION FOR ]
    { USAGE | ALL [ PRIVILEGES ] }
    ON TYPES
    FROM { [ GROUP ] nom_rôle | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]
REVOKE [ GRANT OPTION FOR ]
    { { USAGE | CREATE }
    [, ...] | ALL [ PRIVILEGES ] }
    ON SCHEMAS
    FROM { [ GROUP ] nom_rôle | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]
  
   ALTER DEFAULT PRIVILEGES vous permet de configurer les
   droits qui seront appliqués aux objets qui seront créés dans le futur. (Cela
   ne modifie pas les droits affectés à des objets déjà existants.) Les droits
   peuvent être configurés globalement (autrement dit, pour tous les objets
   créés dans la base courante) ou uniquement pour les objets créés dans les
   schémas indiqués.
  
Bien que vous puissiez changer vos propres droits par défaut ainsi que ceux des rôles dont vous êtes membres, au moment de la création d'un objet, les droits du nouvel objet sont seulement affectés par les droits par défaut du rôle en cours et ne sont pas hérités par tout rôle dont le rôle en cours est un membre.
   Comme indiqué dans Section 5.8, les droits par défaut de tout
   type d'objet donnent tous les droits au propriétaire de l'objet et peut aussi
   donner certains droits à PUBLIC. Néanmoins, ce
   comportement peut être changé par une modification des droits par défaut
   globaux avec ALTER DEFAULT PRIVILEGES.
  
   Actuellement, seuls les droits pour les schémas, tables (ceci incluant les
   vues et les tables distantes, séquences, fonctions et types (ceci incluant
   les domaines) peuvent être modifiés. Pour cette commande, les fonctions
   incluent les agrégats et les procédures. Les mots
   FUNCTIONS et ROUTINES sont équivalents
   dans cette commande. (ROUTINES est préféré comme terme
   standard pour les fonctions et procédures prises ensembles. Dans les versions
   antérieures de PostgreSQL, seul le mot FUNCTIONS était
   autorisé. Il n'est pas possible de configurer séparément les droits par
   défaut des fonctions et des procédures.)
  
   Les droits par défaut indiqués par schéma sont ajoutés aux droits par défaut
   globaux pour un type d'objet particulier. Ceci signifie que vous ne pouvez
   pas supprimer des droits par schéma s'ils sont donnés globalement (soit par
   défaut soit d'après une commande précédente ALTER DEFAULT
   PRIVILEGES qui n'indiquait pas de schéma). Le
   REVOKE par schéma est seulement utile pour inverser les
   effets d'un ancien GRANT par défaut sur un schéma.
  
rôle_cible
       Modifie les droits par défaut pour les objets créés par
       rôle_cible ou, sinon, par le
       rôle courant.
      
nom_schéma
       Le nom d'un schéma existant. Si précisé, les droits par défaut sont
       modifiés pour les objets créés ultérieurement dans ce schéma. Si
       IN SCHEMA est omis, les droits globaux par défaut sont
       modifiés. IN SCHEMA n'est pas autorisé si ON
       SCHEMAS est utilisé puisque les schémas ne peuvent pas être
       imbriqués.
      
nom_rôle
       Le nom d'un rôle existant pour donner ou reprendre les droits. Ce
       paramètre, et tous les autres paramètres dans grant_ou_revoke_réduit, agissent de la
       façon décrite dans GRANT ou REVOKE, sauf qu'il permet de configurer les droits pour
       une classe complète d'objets plutôt que pour des objets nommés
       spécifiques.
      
   Utilisez la commande \ddp de psql
   pour obtenir des informations sur les droits par défaut. La signification des
   valeurs de droit est identique à celles utilisées par \dp
   et est expliquée dans Section 5.8.
  
   Si vous souhaitez supprimer un rôle dont les droits par défaut ont été
   modifiés, il est nécessaire d'inverser les modifications dans ses droits par
   défaut ou d'utiliser DROP OWNED BY pour supprimer l'entrée
   des droits par défaut pour le rôle.
  
   Donner le droit SELECT à tout le monde pour toutes les tables (et vues) que
   vous pourriez créer plus tard dans le schéma mon_schema,
   et permettre au rôle webuser d'utiliser en plus
   INSERT :
   
ALTER DEFAULT PRIVILEGES IN SCHEMA mon_schema GRANT SELECT ON TABLES TO PUBLIC; ALTER DEFAULT PRIVILEGES IN SCHEMA mon_schema GRANT INSERT ON TABLES TO webuser;
Annuler ce qui a été fait ci-dessus, pour que les tables créées par la suite n'aient pas plus de droits qu'en standard :
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema REVOKE SELECT ON TABLES FROM PUBLIC; ALTER DEFAULT PRIVILEGES IN SCHEMA myschema REVOKE INSERT ON TABLES FROM webuser;
   Supprimer le droit publique EXECUTE qui est normalement donné aux fonctions,
   pour toutes les fonctions créées après coup par le rôle
   admin :
   
ALTER DEFAULT PRIVILEGES FOR ROLE admin REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC;
   Notez néanmoins que vous ne pouvez pas obtenir cet effet
   avec une commande limitée à un seul schéma. Cette commande n'a pas d'effet
   sauf si elle annule un GRANT existant :
   
ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC;
Ceci est dû au fait que les droits par défaut par schéma peuvent seulement ajouter des droits au paramétrage global, et non pas en supprimer.
   Il n'existe pas d'instruction ALTER DEFAULT PRIVILEGES
   dans le standard SQL.