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 SET parametre_configuration FROM CURRENT ALTER ROLE nom RESET parametre_configuration ALTER ROLE nom RESET ALL
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 autres 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. Ceci arrive seulement lors de la connexion, donc les paramètres de configuration associés à un rôle pour lequel vous avez utilisé SET ROLE seront ignorés. 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.
Le nom du rôle dont les attributs sont modifiés.
Ces clauses modifient les attributs originairement configurés par CREATE ROLE. Pour plus d'informations, voir la page de référence CREATE ROLE.
Le nouveau nom du rôle.
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.
Les paramètres spécifiques au rôle ne prennent effet qu'à la connexion ; SET ROLE ne traite pas les paramètres de rôles.
Voir SET et Chapitre 18, Configuration du serveur 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 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.
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 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;