ALTER ROLE — Modifier un rôle de base de données
ALTER ROLEspécification_rôle
[ WITH ]option
[ ... ] oùoption
peut être : SUPERUSER | NOSUPERUSER | CREATEDB | NOCREATEDB | CREATEROLE | NOCREATEROLE | INHERIT | NOINHERIT | LOGIN | NOLOGIN | REPLICATION | NOREPLICATION | BYPASSRLS | NOBYPASSRLS | CONNECTION LIMITlimiteconnexion
| [ ENCRYPTED ] PASSWORD 'motdepasse
' | PASSWORD NULL | VALID UNTIL 'dateheure
' ALTER ROLEnom
RENAME TOnouveau_nom
ALTER ROLE {spécification_rôle
| ALL } [ IN DATABASEnom_base
] SETparamètre_configuration
{ TO | = } {value
| DEFAULT } ALTER ROLE {spécification_rôle
| ALL } [ IN DATABASEnom_base
] SETparamètre_configuration
FROM CURRENT ALTER ROLE {spécification_rôle
| ALL } [ IN DATABASEnom_base
] RESETparamètre_configuration
ALTER ROLE {spécification_rôle
| ALL } [ IN DATABASEnom_base
] RESET ALL oùspécification_rôle
peut valoir :nom_rôle
| CURRENT_USER | SESSION_USER
ALTER ROLE
modifie les attributs d'un rôle
PostgreSQL.
La première variante listée dans le synopsis, permet de modifier la plupart
des attributs de rôle spécifiables dans la commande CREATE ROLE (à lire pour plus de détails). (Tous les
attributs possibles sont couverts, à l'exception de la gestion des
appartenances ; GRANT et REVOKE sont utilisés pour cela.) Les attributs qui ne sont
pas mentionnés dans la commande conservent leur paramètrage précédent. Tous
ces attributs peuvent âtre modifiés pour tout rôle par les
superutilisateurs de base de données. Les rôles qui possédent le privilège
CREATEROLE
peuvent modifier ces paramètres à l'exception
de SUPERUSER
, REPLICATION
, et
BYPASSRLS
, mais uniquement pour les rôles qui ne sont
pas superutilisateur. Les rôles ordinaires ne peuvent modifier que leur mot
de passe.
La deuxième variante permet de modifier le nom du rôle. Les superutilisateurs peuvent
renommer n'importe quel rôle. Les rôles disposant du droit
CREATEROLE
peuvent renommer tout rôle qui n'est pas
superutilisateur. L'utilisateur de la session en cours ne peut pas être
renommé. (On se connectera sous un autre utilisateur pour cela.)
Comme les mots de passe chiffrés par MD5
utilisent le nom du rôle comme grain de chiffrement, renommer un rôle efface
son mot de passe si ce dernier est chiffré avec MD5
.
Les autres variantes modifient la valeur par défaut d'une variable de
configuration de session pour un rôle, soit pour toutes les bases soit,
quand la clause IN DATABASE
est spécifiée, uniquement
pour les sessions dans la base nommée. Si ALL
est indiqué
à la place d'un nom de rôle, ceci modifie le paramétrage de tous les rôles.
Utiliser ALL
avec IN DATABASE
est en
effet identique à utiliser la commande ALTER DATABASE ... SET
...
.
Quand le rôle
lance une nouvelle session après cela, la valeur spécifiée devient la valeur
par défaut de la session, surchargeant tout paramètrage présent dans
postgresql.conf
ou provenant de la ligne de
commande de postgres
. Ceci arrive seulement lors de la
connexion ; exécuter SET ROLE ou SET SESSION AUTHORIZATION ne cause pas la configuration de
nouvelles valeurs pour les paramètres. L'ensemble des paramètres pour toutes
les bases est surchargé par les paramètres spécifique à cette base attachés
à un rôle. La configuration pour une base de données spécifique ou pour un
rôle spécifique surcharge la configuration pour tous les rôles.
Les superutilisateurs peuvent modifier les valeurs de session de
n'importe quel utilisateur. Les rôles disposant du droit
CREATEROLE
peuvent modifier les valeurs par défaut pour
les rôles ordinaires (non superutilisateurs et non réplication). Les rôles
standards peuvent seulement configurer des valeurs par défaut pour eux-mêmes.
Certaines variables ne peuvent être configurées de cette façon ou seulement
par un superutilisateur. Seuls les superutilisateurs peuvent modifier un
paramétrage pour tous les rôles dans toutes les bases de données.
nom
Le nom du rôle dont les attributs sont modifiés.
CURRENT_USER
Modifie l'utilisateur actuel au lieu d'un rôle identifié explicitement.
SESSION_USER
Modifie l'utilisateur de la session courante au lieu d'un rôle identifié explicitement.
SUPERUSER
NOSUPERUSER
CREATEDB
NOCREATEDB
CREATEROLE
NOCREATEROLE
INHERIT
NOINHERIT
LOGIN
NOLOGIN
REPLICATION
NOREPLICATION
BYPASSRLS
NOBYPASSRLS
CONNECTION LIMIT
limite_connexion
ENCRYPTED
] PASSWORD
mot_de_passe
| PASSWORD NULLVALID UNTIL
'dateheure
'
Ces clauses modifient les attributs originairement configurés par
CREATE ROLE. Pour
plus d'informations, voir la page de référence CREATE
ROLE
.
nouveau_nom
Le nouveau nom du rôle.
nom_base
Le nom d'une base où se fera la configuration de la variable.
paramètre_configuration
valeur
Positionne la valeur de session par défaut à valeur
pour le paramètre de configuration paramètre
. Si
DEFAULT
est donné pour valeur
ou,
de façon équivalente, si RESET
est utilisé, le
positionnement spécifique de la variable pour le rôle est supprimé. De
cette façon, le rôle hérite de la valeur système par défaut pour les nouvelles
sessions. RESET ALL
est utilisé pour supprimer tous les
paramètrages rôle.
SET FROM CURRENT
sauvegarde la valeur de la session
de ce paramètre en tant que valeur du rôle.
Si IN DATABASE
est précisé, le paramètre de
configuration est intialisé ou supprimé seulement pour le rôle et la
base indiqués.
Les paramètres spécifiques au rôle ne prennent effet qu'à la connexion ; SET ROLE et SET SESSION AUTHORIZATION ne traitent pas les paramètres de rôles.
Voir SET et Chapitre 19 pour plus d'informations sur les noms et les valeurs autorisés pour les paramètres.
CREATE ROLE est utilisé pour ajouter de nouveaux rôles et DROP ROLE pour les supprimer.
ALTER ROLE
ne peut pas modifier les appartenances à un rôle.
GRANT et
REVOKE sont conçus pour cela.
Faites attention lorsque vous précisez un mot de passe non chiffré avec
cette commande. Le mot de passe sera transmis en clair au serveur. Il
pourrait se trouver tracer dans l'historique des commandes du client
et dans les traces du serveur. psql contient une commande
\password
qui peut être utilisé pour changer le mot de
passe d'un rôle sans exposer le mot de passe en clair.
Il est également possible de lier une valeur de session par défaut à une base de données plutôt qu'à un rôle ; voir ALTER DATABASE. S'il y a un conflit, les paramètres spécifiques à la paire base de données/rôle surchargent ceux spécifiques au rôle, qui eux-même surchargent ceux spécifiques à la base de données.
Modifier le mot de passe d'un rôle :
ALTER ROLE davide WITH PASSWORD 'hu8jmn3';
Supprimer le mot de passe d'un rôle :
ALTER ROLE davide WITH PASSWORD NULL;
Modifier la date d'expiration d'un mot de passe, en spécifiant que le mot de passe doit expirer à midi le 4 mai 2015 fuseau horaire UTC plus 1 heure :
ALTER ROLE chris VALID UNTIL 'May 4 12:00:00 2015 +1';
Créer un mot de passe toujours valide :
ALTER ROLE fred VALID UNTIL 'infinity';
Donner à un rôle la capacité de gérer d'autres rôles et de créer de nouvelles bases de données :
ALTER ROLE miriam CREATEROLE CREATEDB;
Donner à un rôle une valeur différente de celle par défaut pour le paramètre maintenance_work_mem :
ALTER ROLE worker_bee SET maintenance_work_mem = 100000;
Donner à un rôle une configuration différente, spécifique à une base de données, du paramètre client_min_messages :
ALTER ROLE fred IN DATABASE devel SET client_min_messages = DEBUG;
L'instruction ALTER ROLE
est une extension
PostgreSQL.