Documentation PostgreSQL 14.22 » Référence » Applications client de PostgreSQL » createuser

Précédent | Niveau supérieur | Suivant
createdb | Sommaire | dropdb

## createuser

createuser — Définir un nouveau compte utilisateur PostgreSQL

## Synopsis

`createuser` [`option_connexion`...] [`option`...] [`nom_utilisateur`]

## Description

createuser crée un nouvel utilisateur PostgreSQL (ou, plus précisément, un rôle). Seuls les super-utilisateurs 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 super-utilisateur 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.

## Options

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.

`-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``
`--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`
`--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.)

`-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é, et donner ou supprimer les membres dans 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 super-utilisateur.

`-S`
`--no-superuser`

  Le nouvel utilisateur n'a pas les privilèges super-utilisateur. Cela correspond au comportement par défaut.

`-V`
`--version`

  Affiche 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ô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.

## Environnement

`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).

## Diagnostics

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.

## Exemples

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`, super-utilisateur, 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 'SCRAM-SHA-256$4096:44560wPMLfjqiAzyPDZ/eQ==$4CA054rZlSFEq8Z3FEhToBTa2X6KnWFxFkPwIbKoDe0=:L/nbSZRCjp6RhOhKK56GoR1zibCCSePKshCJ9lnl3yw=' SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;

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.

## Voir aussi

dropuser, CREATE ROLE