createuser — Définir un nouveau compte utilisateur PostgreSQL
createuser
[option_connexion
...] [option
...] [nom_utilisateur
]
createuser crée un nouvel utilisateur
PostgreSQL (ou, plus précisément, un rôle).
Seuls les superutilisateurs et les utilisateurs disposant du droit
CREATEROLE
peuvent créer de nouveaux utilisateurs.
createuser ne peut de ce fait être invoqué que
par un utilisateur pouvant se connecter en superutilisateur ou en
utilisateur ayant le droit CREATEROLE
.
Pour créer un rôle disposant de l'attribut SUPERUSER
,
REPLICATION
ou BYPASSRLS
, il est
impératif de se connecter en superutilisateur ; la connexion avec un
rôle ne disposant que du droit CREATEROLE
n'est pas
suffisante. Être superutilisateur implique la capacité d'outrepasser toutes
les vérifications de droits d'accès à la base de données ; l'attribut
SUPERUSER
ne doit pas être accordé à la légère.
CREATEROLE
donne aussi accès à des droits très étendus.
createuser est un enrobage de la commande
SQL CREATE
ROLE
. Il n'y a pas de
différence réelle entre la création d'utilisateurs par cet outil ou au
travers d'autres méthodes d'accès au serveur.
createuser accepte les arguments suivant en ligne de commande
nom_utilisateur
Le nom de l'utilisateur à créer. Ce nom doit être différent de tout rôle de l'instance courante de PostgreSQL.
-a role
--with-admin=role
Précise un rôle existant qui sera automatiquement ajouté comme membre
du nouveau rôle avec l'option d'administration, lui donnant le droit
de faire en sorte que d'autres rôles soient membres du nouveau rôle.
Plusieurs rôles existants peuvent être indiqués en écrivant plusieurs
options -a
.
-c numéro
--connection-limit=numéro
Configure le nombre maximum de connexions simultanées pour le nouvel utilisateur. Par défaut, il n'y a pas de limite.
-d
--createdb
Le nouvel utilisateur est autorisé à créer des bases de données.
-D
--no-createdb
Le nouvel utilisateur n'est pas autorisé à créer des bases de données. Cela correspond au comportement par défaut.
-e
--echo
Les commandes engendrées par createuser et envoyées au serveur sont affichées.
-E
--encrypted
Cette option est obsolète mais est toujours acceptée pour raison de compatibilité descendante.
-g role
--member-of=role
--role=role
(obsolète)
Indique que le nouveau rôle doit être automatiquement ajouté comme membre
du rôle existant indiqué. Plusieurs rôles existants peuvent être cités
en utilisant plusieurs fois l'option -g
.
-i
--inherit
Le nouveau rôle hérite automatiquement des droits des rôles dont il est membre. Comportement par défaut.
-I
--no-inherit
Le nouveau rôle n'hérite pas automatiquement des droits des rôles dont il est membre.
--interactive
Demande le nom de l'utilisateur si aucun n'a été fourni sur la ligne de
commande, et demande aussi les attributs équivalents aux options
-d
/-D
,
-r
/-R
,
-s
/-S
si les options en ligne de
commande n'ont pas été explicitement indiquées. (Cela correspond au
comportement par défaut de PostgreSQL 9.1.)
-l
--login
Le nouvel utilisateur est autorisé à se connecter (son nom peut être utilisé comme identifiant initial de session). Comportement par défaut.
-L
--no-login
Le nouvel utilisateur n'est pas autorisé à se connecter. (Un rôle sans droit de connexion est toujours utile pour gérer les droits de la base de données.)
-m role
--with-member=role
Indique un rôle existant qui sera automatiquement ajouté comme membre du
nouveau rôle. Plusieurs rôles existants peuvent être indiqués en utilisant
plusieurs fois l'option -m
.
-P
--pwprompt
L'utilisation de cette option impose à createuser d'afficher une invite pour la saisie du mot de passe du nouvel utilisateur. Cela n'a pas d'utilité si l'authentification par mot de passe n'est pas envisagée.
-r
--createrole
Le nouvel utilisateur sera autorisé à créer, modifier, supprimer, ajouter
un commentaire, modifier le label de sécurité pour d'autres rôles.
Autrement dit, cet utilisateur aura
l'attribut CREATEROLE
. Voir création de rôle pour plus de détails sur les possibilités
offertes par ce droit.
-R
--no-createrole
Le nouvel utilisateur n'est pas autorisé à créer de nouveaux rôles. Cela correspond au comportement par défaut.
-s
--superuser
Le nouvel utilisateur a les privilèges superutilisateur.
-S
--no-superuser
Le nouvel utilisateur n'a pas les privilèges superutilisateur. Cela correspond au comportement par défaut.
-v timestamp
--valid-until=timestamp
Configure une date et heure après lesquels le mot de passe du rôle n'est plus valide. Par défaut, il n'y a pas de date d'expiration du mot de passe.
-V
--version
Affiche la version de createuser, puis quitte.
--bypassrls
Le nouvel utilisateur va contourner toutes les politiques de sécurité au niveau ligne (RLS).
--no-bypassrls
Le nouvel utilisateur ne va pas contourner toutes les politiques de sécurité au niveau ligne (RLS).
--replication
Le nouvel utilisateur a l'attribut REPLICATION
,
décrit plus en détails dans la documentation pour CREATE ROLE. Ceci est la valeur par défaut.
--no-replication
Le nouvel utilisateur n'a pas l'attribut
REPLICATION
, décrit plus en détails dans la
documentation pour CREATE ROLE.
createuser accepte aussi les arguments suivant en ligne de commande pour les paramètres de connexion :
-h hôte
--host=hôte
Le nom de l'hôte sur lequel le serveur est en cours d'exécution. Si la valeur commence avec un slash (/), elle est utilisée comme répertoire du socket de domaine Unix.
-p port
--port=port
Le port TCP ou l'extension du fichier socket de domaine Unix sur lequel le serveur attend des connexions.
-U nomutilisateur
--username=nomutilisateur
Nom de l'utilisateur utilisé pour la connexion (pas celui à créer).
-w
--no-password
Ne demande jamais un mot de passe. Si le serveur en réclame un pour
l'authentification et qu'un mot de passe n'est pas disponible d'une
autre façon (par exemple avec le fichier .pgpass
),
la tentative de connexion échouera. Cette option peut être utile pour
les scripts où aucun utilisateur n'est présent pour saisir un mot de
passe.
-W
--password
Force createuser à demander un mot de passe (pour la connexion au serveur, pas pour le mot de passe du nouvel utilisateur).
Cette option n'est jamais obligatoire car
createuser demandera automatiquement un mot
de passe si le serveur exige une authentification par mot de passe.
Néanmoins, createuser perdra une tentative
de connexion pour trouver que le serveur veut un mot de passe. Dans
certains cas, il est préférable d'ajouter l'option -W
pour éviter la tentative de connexion.
PGHOST
PGPORT
PGUSER
Paramètres de connexion par défaut
PG_COLOR
Indique s'il faut utiliser la couleur dans les messages de diagnostic.
Les valeurs possibles sont always
,
auto
, never
.
Cet outil, comme la plupart des autres outils PostgreSQL, utilise aussi les variables d'environnement supportées par la bibliothèque libpq (voir Section 34.15).
En cas de problèmes, on peut consulter CREATE ROLE et psql qui fournissent des informations sur les problèmes potentiels et les messages d'erreur. Le serveur de la base de données doit être en cours d'exécution sur l'hôte cible. De plus, tout paramétrage de connexion par défaut et toute variable d'environnement utilisée par le client de la bibliothèque libpq s'applique.
Créer un utilisateur joe
sur le serveur de bases de
données par défaut :
$
createuser joe
Pour créer un utilisateur joe
sur le serveur de base de
données avec le mode interactif :
$
createuser --interactive joe
Shall the new role be a superuser? (y/n)
n
Shall the new role be allowed to create databases? (y/n)
n
Shall the new role be allowed to create more new roles? (y/n)
n
Créer le même utilisateur, joe
, sur le serveur
eden
, port 5000, sans interaction, avec affichage de la
commande sous-jacente :
$
createuser -h eden -p 5000 -S -D -R -e joe
CREATE ROLE joe NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;
Créer l'utilisateur joe
, superutilisateur, et lui
affecter immédiatement un mot de passe :
$
createuser -P -s -e joe
Enter password for new role:
xyzzy
Enter it again:
xyzzy
CREATE ROLE joe PASSWORD 'xyzzy' SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;
CREATE ROLE
Dans l'exemple ci-dessus, le nouveau mot de passe n'est pas affiché lorsqu'il est saisi. Il ne l'est ici que pour plus de clareté. Comme vous le voyez, le mot de passe est chiffré avant d'être envoyé au client.