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 superutilisateur, il est impératif de se connecter en
superutilisateur ; la simple connexion en utilisateur
disposant 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 ; les
privilèges de superutilisateur ne peuvent pas être accordés à la légère.
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_utilisateurLe nom de l'utilisateur à créer. Ce nom doit être différent de tout rôle de l'instance courante de PostgreSQL.
-c numéro--connection-limit=numéroConfigure le nombre maximum de connexions simultanées pour le nouvel utilisateur. Par défaut, il n'y a pas de limite.
-d--createdbLe nouvel utilisateur est autorisé à créer des bases de données.
-D--no-createdbLe nouvel utilisateur n'est pas autorisé à créer des bases de données. Cela correspond au comportement par défaut.
-e--echoLes commandes engendrées par createuser et envoyées au serveur sont affichées.
-E--encryptedCette option est obsolète mais est toujours acceptée pour raison de compatibilité descendante.
-g role--role=role
Indique le rôle auquel ce rôle sera automatiquement ajouté comme
nouveau membre. Plusieurs rôles auquels ce rôle sera ajouté comme
membre peuvent être spécifiés en utilisant plusieurs fois l'option
-g.
-i--inheritLe nouveau rôle hérite automatiquement des droits des rôles dont il est membre. Comportement par défaut.
-I--no-inheritLe 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--loginLe nouvel utilisateur est autorisé à se connecter (son nom peut être utilisé comme identifiant initial de session). Comportement par défaut.
-L--no-loginLe 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.)
-P--pwpromptL'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 est autorisé à créer de nouveaux rôles
(il possède le privilège CREATEROLE).
-R--no-createroleLe nouvel utilisateur n'est pas autorisé à créer de nouveaux rôles. Cela correspond au comportement par défaut.
-s--superuserLe nouvel utilisateur a les privilèges superutilisateur.
-S--no-superuserLe nouvel utilisateur n'a pas les privilèges superutilisateur. Cela correspond au comportement par défaut.
-V--versionAffiche la version de createuser, puis quitte.
--replication
Le nouvel utilisateur a l'attribut REPLICATION, décrit plus en détails
dans la documentation pour CREATE ROLE.
--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ôteLe 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=portLe port TCP ou l'extension du fichier socket de domaine Unix sur lequel le serveur attend des connexions.
-U nomutilisateur--username=nomutilisateurNom 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--passwordForce 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.
PGHOSTPGPORTPGUSERParamètres de connexion par défaut
Cet outil, comme la plupart des autres outils PostgreSQL, utilise aussi les variables d'environnement supportées par la bibliothèque libpq (voir Section 33.14).
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 joeShall the new role be a superuser? (y/n)nShall the new role be allowed to create databases? (y/n)nShall 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 joeCREATE 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 joeEnter password for new role:xyzzyEnter it again:xyzzyCREATE 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.