Créer et gérer des utilisateurs PostgreSQL

Cette page explique comment réaliser les opérations suivantes pour les instances Cloud SQL :

  • Configurer le compte utilisateur par défaut
  • Créer, supprimer et mettre à jour d'autres comptes utilisateur

Pour en savoir plus sur le fonctionnement des utilisateurs avec Cloud SQL, consultez la page Utilisateurs PostgreSQL.

Avant de commencer

Avant d'effectuer les tâches ci-dessous, créez une instance Cloud SQL. Pour en savoir plus, consultez la page Créer des instances.

Si vous prévoyez de gérer les utilisateurs à l'aide du client d'administration de votre base de données, vous devez avoir configuré l'utilisateur par défaut sur l'instance. Pour en savoir plus, consultez la section Configurer le compte par défaut.

En outre, vous devez avoir configuré un client d'administration connecté à votre instance. Pour en savoir plus, consultez la page Options de connexion pour les applications externes.

Configurer le compte utilisateur par défaut

Lorsque vous créez une instance Cloud SQL, vous devez configurer le compte utilisateur par défaut pour pouvoir vous connecter à l'instance.

Avec Cloud SQL pour PostgreSQL, l'utilisateur par défaut est postgres.

Pour configurer l'utilisateur par défaut :

Console

  1. Dans Google Cloud Console, accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. Cliquez sur le nom de l'instance pour ouvrir la page Présentation.
  3. Dans le menu de navigation SQL, sélectionnez Utilisateurs.
  4. Recherchez l'utilisateur postgres et sélectionnez Modifier le mot de passe dans le menu "Autres actions" Icône Plus.
  5. Indiquez un mot de passe sécurisé facile à mémoriser, puis cliquez sur OK.

gcloud

Définissez le mot de passe de l'utilisateur par défaut :

gcloud sql users set-password postgres \
--instance=INSTANCE_NAME \
--prompt-for-password

REST v1

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • project-id : ID de votre projet
  • instance-id : ID de l'instance souhaitée
  • user-id : ID de l'utilisateur
  • password : mot de passe de l'utilisateur

Méthode HTTP et URL :

PUT https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users?name=user-id

Corps JSON de la requête :

{
  "name": "user-id",
  "password": "password"
}

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "status": "DONE",
  "user": "user@example.com",
  "insertTime": "2020-02-07T22:38:41.217Z",
  "startTime": "2020-02-07T22:38:41.217Z",
  "endTime": "2020-02-07T22:38:44.801Z",
  "operationType": "UPDATE_USER",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

REST v1beta4

La requête suivante exécute la méthode users:update pour mettre à jour le compte utilisateur racine.

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • project-id : ID de votre projet
  • instance-id : ID de l'instance souhaitée
  • user-id : ID de l'utilisateur
  • password : mot de passe de l'utilisateur

Méthode HTTP et URL :

PUT https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users?name=user-id

Corps JSON de la requête :

{
  "name": "user-id",
  "password": "password"
}

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "DONE",
  "user": "user@example.com",
  "insertTime": "2020-02-07T22:38:41.217Z",
  "startTime": "2020-02-07T22:38:41.217Z",
  "endTime": "2020-02-07T22:38:44.801Z",
  "operationType": "UPDATE_USER",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

Créer un utilisateur

Console

  1. Dans Google Cloud Console, accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. Cliquez sur le nom de l'instance pour ouvrir la page Présentation.
  3. Dans le menu de navigation SQL, sélectionnez Utilisateurs.
  4. Cliquez sur Ajouter un compte utilisateur.

    Sur la page Ajouter un compte utilisateur à l'instance instance_name, vous pouvez choisir de vous authentifier avec la méthode de base de données intégrée (nom d'utilisateur et mot de passe) ou en tant qu'utilisateur IAM.

    • Si vous sélectionnez Authentification intégrée (valeur par défaut), ajoutez les informations suivantes :
      • Un nom d'utilisateur
      • Un mot de passe (facultatif).
      • Si vous sélectionnez Cloud IAM, vous devez saisir dans le champ Membre l'adresse e-mail d'un membre IAM existant de votre projet Google Cloud à associer avec l'utilisateur.
    • Cliquez sur Ajouter.

Les utilisateurs créés sur des instances à l'aide de la méthode d'authentification de Cloud SQL reçoivent automatiquement le rôle cloudsqlsuperuser et disposent des droits suivants associés à ce rôle : CREATEROLE, CREATEDB et LOGIN.

Si vous devez modifier les attributs de ces utilisateurs, utilisez la commande ALTER ROLE dans le client psql. Certains attributs ne peuvent pas être modifiés avec la commande ALTER ROLE. Les rôles NOSUPERUSER et NOREPLICATION figurent parmi les exceptions.

gcloud

Créez l'utilisateur :

gcloud sql users create USER_NAME \
--instance=INSTANCE_NAME \
--password=PASSWORD

Les utilisateurs créés sur des instances à l'aide de la méthode d'authentification de Cloud SQL reçoivent automatiquement le rôle cloudsqlsuperuser et disposent des droits suivants associés à ce rôle : CREATEROLE, CREATEDB et LOGIN.

Si vous devez modifier les attributs de ces utilisateurs, utilisez la commande ALTER ROLE dans le client psql. Certains attributs ne peuvent pas être modifiés avec la commande ALTER ROLE. Les rôles NOSUPERUSER et NOREPLICATION figurent parmi les exceptions.

Les limites de longueur des noms d'utilisateur sont identiques pour Cloud SQL et pour PostgreSQL sur site.

REST v1

La requête ci-dessous exécute la méthode users.insert pour créer un compte utilisateur "user_name".

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • project-id : ID de votre projet
  • instance-id : ID de l'instance souhaitée
  • user-id : ID de l'utilisateur
  • password : mot de passe de l'utilisateur

Méthode HTTP et URL :

POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users

Corps JSON de la requête :

{
  "name": "user-id",
  "password": "password"
}

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "status": "DONE",
  "user": "user@example.com",
  "insertTime": "2020-02-07T22:44:16.656Z",
  "startTime": "2020-02-07T22:44:16.686Z",
  "endTime": "2020-02-07T22:44:20.437Z",
  "operationType": "CREATE_USER",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

Les utilisateurs créés sur des instances à l'aide de la méthode d'authentification de Cloud SQL reçoivent automatiquement le rôle cloudsqlsuperuser et disposent des droits suivants associés à ce rôle : CREATEROLE, CREATEDB et LOGIN.

Si vous devez modifier les attributs de ces utilisateurs, utilisez la commande ALTER ROLE dans le client psql. Certains attributs ne peuvent pas être modifiés avec la commande ALTER ROLE. Les rôles NOSUPERUSER et NOREPLICATION figurent parmi les exceptions.

Les limites de longueur des noms d'utilisateur sont identiques pour Cloud SQL et pour PostgreSQL sur site.

REST v1beta4

La requête ci-dessous exécute la méthode users.insert pour créer un compte utilisateur "user_name".

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • project-id : ID de votre projet
  • instance-id : ID de l'instance souhaitée
  • user-id : ID de l'utilisateur
  • password : mot de passe de l'utilisateur

Méthode HTTP et URL :

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users

Corps JSON de la requête :

{
  "name": "user-id",
  "password": "password"
}

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "DONE",
  "user": "user@example.com",
  "insertTime": "2020-02-07T22:44:16.656Z",
  "startTime": "2020-02-07T22:44:16.686Z",
  "endTime": "2020-02-07T22:44:20.437Z",
  "operationType": "CREATE_USER",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

Les utilisateurs créés sur des instances à l'aide de la méthode d'authentification de Cloud SQL reçoivent automatiquement le rôle cloudsqlsuperuser et disposent des droits suivants associés à ce rôle : CREATEROLE, CREATEDB et LOGIN.

Si vous devez modifier les attributs de ces utilisateurs, utilisez la commande ALTER ROLE dans le client psql. Certains attributs ne peuvent pas être modifiés avec la commande ALTER ROLE. Les rôles NOSUPERUSER et NOREPLICATION figurent parmi les exceptions.

Les limites de longueur des noms d'utilisateur sont identiques pour Cloud SQL et pour PostgreSQL sur site.

Client psql

  1. Lorsque l'invite psql s'affiche, créez l'utilisateur :
      CREATE USER USER_NAME
          WITH ATTRIBUTE1 ATTRIBUTE2...;
          \password USER_NAME;
      

    Saisissez le mot de passe lorsque vous y êtes invité.

    Pour en savoir plus sur les attributs des rôles, consultez la documentation PostgreSQL.

  2. Vous pouvez confirmer la création de l'utilisateur en affichant la table utilisateur :
      SELECT * FROM pg_roles;
      

Modifier un mot de passe utilisateur

Pour modifier le mot de passe d'un utilisateur :

Console

  1. Dans Google Cloud Console, accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. Cliquez sur le nom de l'instance pour ouvrir la page Présentation.
  3. Dans le menu de navigation SQL, sélectionnez Utilisateurs.
  4. Cliquez sur le menu "Autres actions" Icône Plus correspondant à l'utilisateur que vous souhaitez mettre à jour.
  5. Sélectionnez Modifier le mot de passe, spécifiez un nouveau mot de passe, puis cliquez sur OK.

gcloud

Mettez à jour le mot de passe :

gcloud sql users set-password USER_NAME \
--instance=INSTANCE_NAME \
--prompt-for-password

REST v1

La requête suivante exécute la méthode users:update pour mettre à jour le mot de passe du compte utilisateur "user_name".

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • project-id : ID de votre projet
  • instance-id : ID de l'instance souhaitée
  • user-id : ID de l'utilisateur
  • password : mot de passe de l'utilisateur

Méthode HTTP et URL :

PUT https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users?name=user-id

Corps JSON de la requête :

{
  "name": "user-id",
  "password": "password"
}

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "status": "DONE",
  "user": "user@example.com",
  "insertTime": "2020-02-07T22:38:41.217Z",
  "startTime": "2020-02-07T22:38:41.217Z",
  "endTime": "2020-02-07T22:38:44.801Z",
  "operationType": "UPDATE_USER",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

REST v1beta4

La requête suivante exécute la méthode users:update pour mettre à jour le mot de passe du compte utilisateur "user_name".

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • project-id : ID de votre projet
  • instance-id : ID de l'instance souhaitée
  • user-id : ID de l'utilisateur
  • password : mot de passe de l'utilisateur

Méthode HTTP et URL :

PUT https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users?name=user-id

Corps JSON de la requête :

{
  "name": "user-id",
  "password": "password"
}

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "DONE",
  "user": "user@example.com",
  "insertTime": "2020-02-07T22:38:41.217Z",
  "startTime": "2020-02-07T22:38:41.217Z",
  "endTime": "2020-02-07T22:38:44.801Z",
  "operationType": "UPDATE_USER",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

Client psql

  1. Lorsque l'invite psql s'affiche, modifiez le mot de passe :
    \password USER_NAME;
    

    Saisissez le mot de passe lorsque vous y êtes invité.

Mettre à jour les utilisateurs

Pour mettre à jour les propriétés utilisateur telles que les attributs, vous devez utiliser le client psql. Pour en savoir plus, consultez la section relative aux rôles de base de données dans la documentation PostgreSQL.

Répertorier les utilisateurs

Pour répertorier les utilisateurs, procédez comme suit :

Console

  1. Dans Google Cloud Console, accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. Cliquez sur le nom de l'instance pour ouvrir la page Présentation.
  3. Dans le menu de navigation SQL, sélectionnez Utilisateurs.

    La colonne Authentication indique si l'utilisateur est un utilisateur IAM user ou s'il utilise l'authentification intégrée.

gcloud

Répertoriez les utilisateurs de cette instance :

gcloud sql users list \
--instance=INSTANCE_NAME

La commande renvoie les éléments Name, Host et Type d'authentification (en tant que BUILT_IN ou CLOUD_IAM_USER) pour chaque utilisateur.

Pour obtenir la liste complète des paramètres de cette commande, consultez la page de référence de la commande gcloud sql users list.

REST v1

La requête ci-dessous exécute la méthode users:list pour répertorier les utilisateurs définis pour une instance.

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • project-id : ID de votre projet
  • instance-id : ID de l'instance souhaitée

Méthode HTTP et URL :

GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

{
  "kind": "sql#usersList",
  "items": [
    {
      "kind": "sql#user",
      "etag": "--redacted--",
      "name": "sqlserver",
      "host": "",
      "instance": "instance-id",
      "project": "project-id",
      "sqlserverUserDetails": {
        "serverRoles": [
          "CustomerDbRootRole"
        ]
      }
    },
    {
      "kind": "sql#user",
      "etag": "--redacted--",
      "name": "user-id-1",
      "host": "",
      "instance": "instance-id",
      "project": "project-id",
      "sqlserverUserDetails": {
        "serverRoles": [
          "CustomerDbRootRole"
        ]
      }
    },
    {
      "kind": "sql#user",
      "etag": "--redacted--",
      "name": "user-id-2",
      "host": "",
      "instance": "instance-id",
      "project": "project-id",
      "sqlserverUserDetails": {
        "serverRoles": [
          "CustomerDbRootRole"
        ]
      }
    },
    {
      ...
    },
    {
      ...
    }
  ]
}

REST v1beta4

La requête ci-dessous exécute la méthode users:list pour répertorier les utilisateurs définis pour une instance.

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • project-id : ID de votre projet
  • instance-id : ID de l'instance souhaitée

Méthode HTTP et URL :

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

{
  "kind": "sql#usersList",
  "items": [
    {
      "kind": "sql#user",
      "etag": "--redacted--",
      "name": "sqlserver",
      "host": "",
      "instance": "instance-id",
      "project": "project-id",
      "sqlserverUserDetails": {
        "serverRoles": [
          "CustomerDbRootRole"
        ]
      }
    },
    {
      "kind": "sql#user",
      "etag": "--redacted--",
      "name": "user-id-1",
      "host": "",
      "instance": "instance-id",
      "project": "project-id",
      "sqlserverUserDetails": {
        "serverRoles": [
          "CustomerDbRootRole"
        ]
      }
    },
    {
      "kind": "sql#user",
      "etag": "--redacted--",
      "name": "user-id-2",
      "host": "",
      "instance": "instance-id",
      "project": "project-id",
      "sqlserverUserDetails": {
        "serverRoles": [
          "CustomerDbRootRole"
        ]
      }
    },
    {
      ...
    },
    {
      ...
    }
  ]
}

Client psql

Lorsque l'invite psql s'affiche, répertoriez les utilisateurs PostgreSQL :

SELECT * FROM pg_roles;

Supprimer des comptes utilisateur

Pour supprimer un compte utilisateur, procédez comme suit :

Avant de supprimer un utilisateur, vous devez supprimer tous les objets qu'il possède ou réaffecter la propriété de ces objets, ainsi que révoquer les droits accordés par le rôle sur d'autres objets.

Console

  1. Dans Google Cloud Console, accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. Cliquez sur le nom de l'instance pour ouvrir la page Présentation.
  3. Dans le menu de navigation SQL, sélectionnez Utilisateurs.
  4. Cliquez sur le menu "Autres actions" Icône Plus correspondant à l'utilisateur que vous souhaitez supprimer.
  5. Sélectionnez Supprimer, puis à nouveau Supprimer.

gcloud

Supprimez l'utilisateur :

gcloud sql users delete USER_NAME \
--instance=INSTANCE_NAME

REST v1

La requête ci-dessous exécute la méthode users.delete pour supprimer le compte utilisateur spécifié.

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • project-id : ID de votre projet
  • instance-id : ID de l'instance souhaitée
  • user-id : ID de l'utilisateur

Méthode HTTP et URL :

DELETE https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users?host=&name=user-id

Corps JSON de la requête :

{
  "name": "user-id",
  "host": ""
}

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "status": "DONE",
  "user": "user@example.com",
  "insertTime": "2020-02-07T22:38:41.217Z",
  "startTime": "2020-02-07T22:38:41.217Z",
  "endTime": "2020-02-07T22:38:44.801Z",
  "operationType": "DELETE_USER",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

REST v1beta4

La requête ci-dessous exécute la méthode users.delete pour supprimer le compte utilisateur spécifié.

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • project-id : ID de votre projet
  • instance-id : ID de l'instance souhaitée
  • user-id : ID de l'utilisateur

Méthode HTTP et URL :

DELETE https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users?host=&name=user-id

Corps JSON de la requête :

{
  "name": "user-id",
  "host": ""
}

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "DONE",
  "user": "user@example.com",
  "insertTime": "2020-02-07T22:38:41.217Z",
  "startTime": "2020-02-07T22:38:41.217Z",
  "endTime": "2020-02-07T22:38:44.801Z",
  "operationType": "DELETE_USER",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

Client psql

  1. Lorsque l'invite psql s'affiche, supprimez l'utilisateur :
    DROP ROLE USER_NAME;
    

    Pour en savoir plus sur l'instruction DROP ROLE, consultez la documentation PostgreSQL.

Étapes suivantes