ALTER ROLE
ALTER ROLE — Modifier un rôle de base de données
Synopsis
ALTER ROLE nom [ [ WITH ] option [ ... ] ]
où option peut être :
SUPERUSER | NOSUPERUSER
| CREATEDB | NOCREATEDB
| CREATEROLE | NOCREATEROLE
| CREATEUSER | NOCREATEUSER
| INHERIT | NOINHERIT
| LOGIN | NOLOGIN
| CONNECTION LIMIT limiteconnexion
| [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'motdepasse'
| VALID UNTIL 'dateheure'
ALTER ROLE nom RENAME TO nouveaunom
ALTER ROLE nom SET parametre_configuration { TO | = } { valeur | DEFAULT }
ALTER ROLE nom RESET parametre_configuration
Description
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, 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 troisième et quatrième variantes modifient la valeur par défaut
d'une variable de configuration de session pour un rôle. 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
. (Pour un rôle privé du
droit LOGIN, les valeurs par défaut de la
session n'ont aucun effet.) Les rôles ordinaires peuvent changer
leurs valeurs de sesion par défaut. 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). Certaines variables ne peuvent être
configurées de cette façon ou seulement par un superutilisateur.
Paramètres
-
nom
-
Le nom du rôle dont les attributs sont modifiés.
-
SUPERUSER,
NOSUPERUSER,
CREATEDB,
NOCREATEDB,
CREATEROLE,
NOCREATEROLE,
CREATEUSER,
NOCREATEUSER,
INHERIT,
NOINHERIT,
LOGIN,
NOLOGIN,
CONNECTION LIMIT
limite_connexion
,
PASSWORD
motdepasse
,
ENCRYPTED,
UNENCRYPTED,
VALID 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
.
-
nouveaunom
-
Le nouveau nom du rôle.
-
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.
Voir SET
et Chapitre 17,
Configuration du serveur pour plus d'informations sur les
noms et les valeurs autorisés pour les paramètres.
Notes
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 en toute sécurité.
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. En cas de conflit, les paramétrages de rôles
surchargent ceux de base de données.
Exemples
Modifier le mot de passe d'un rôle :
ALTER ROLE davide WITH PASSWORD 'hu8jmn3';
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 créer d'autres rôles et 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;
Compatibilité
L'instruction
ALTER
ROLE
est une extension PostgreSQL™.