Conceptuellement, les rôles de la base sont totalement
séparés des utilisateurs du système d'exploitation. En pratique,
il peut être commode de maintenir une correspondance mais cela
n'est pas requis. Les rôles sont globaux à toute une
installation de groupe de bases de données (et non individuelle pour
chaque base). Pour créer un rôle, utilisez la commande SQL
CREATE ROLE
:
CREATE ROLE nom_utilisateur
;
nom_utilisateur
suit les règles des
identifiants SQL : soit sans guillemets et sans caractères spéciaux,
soit entre double-guillemets (en pratique, vous voudrez surtout ajouter
des options supplémentaires, comme LOGIN
, à cette commande.
Vous trouverez plus de détails ci-dessous). Pour supprimer un rôle existant,
utilisez la commande analogue DROP
ROLE
:
DROP ROLE nom_utilisateur
;
Pour une certaine facilité d'utilisation, les programmes createuser et dropuser sont fournis comme emballage de ces commandes SQL et peuvent être appelés depuis la ligne de commande du shell :
createusernom_utilisateur
dropusernom_utilisateur
Pour déterminer l'ensemble des rôles existants, examinez le catalogue
système pg_roles
existant, par exemple
SELECT rolname FROM pg_roles;
pour voir uniquement ceux capables de se connecter :
SELECT rolname FROM pg_roles WHERE rolcanlogin;
La méta-commande \du
du programme psql est
aussi utile pour lister les rôles existants.
Afin d'amorcer le système de base de données, un système récemment
installé contient toujours un rôle prédéfini capable de se connecter.
Ce rôle est un
superutilisateur et aura le même nom que l'utilisateur
du système d'exploitation qui a initialisé le groupe de bases de
données, à moins que cela ne soit modifié en lançant la commande
initdb
. C'est habituel mais non requis de faire en
sorte que ce rôle s'appelle
postgres
. Pour créer plus de rôles, vous devez
d'abord vous connecter en tant que ce rôle initial.
Chaque connexion au serveur de la base de données est faite au nom d'un
certain rôle et ce rôle détermine les droits d'accès initiaux pour les
commandes lancées sur cette connexion. Le nom du rôle
à employer pour une connexion à une base particulière est indiqué
par le client initialisant la demande de connexion et ce, de la
manière qui lui est propre. Par exemple, le programme
psql
utilise l'option de ligne de commandes
-U
pour préciser sous quel rôle il se
connecte. Beaucoup d'applications (incluant createuser
et psql
) utilisent par défaut le nom courant de
l'utilisateur du système d'exploitation. Par conséquence, il peut souvent
être pratique de maintenir une correspondance de nommage entre les rôles et
les utilisateurs du système d'exploitation.
La configuration de l'authentification du client détermine avec quel rôle de la base, la connexion cliente donnée se connectera, comme cela est expliqué dans le Chapitre 21 (donc, un client n'est pas obligé de se connecter avec le rôle du même nom que son nom d'utilisateur dans le système d'exploitation ; de la même façon que le nom de connexion d'un utilisateur peut ne pas correspondre à son vrai nom). Comme le rôle détermine l'ensemble des droits disponibles pour le client connecté, il est important de configurer soigneusement les droits quand un environnement multi-utilisateurs est mis en place.