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;
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. Ce rôle est un
superutilisateur et aura par défaut 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
). Par habitude, ce rôle sera nommé
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 20 (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.