Créer et gérer des utilisateurs MySQL

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 MySQL.

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.

Concernant Cloud SQL pour MySQL, l'utilisateur par défaut est root.

Pour configurer l'utilisateur par défaut :

Console

  1. Accédez à la page "Instances Cloud SQL" dans Google Cloud Console.

    Accéder à la page "Instances Cloud SQL"

  2. Cliquez sur l'instance pour ouvrir la page "Présentation" correspondante.
  3. Dans le menu de navigation, sélectionnez Utilisateurs.
  4. Recherchez l'utilisateur root ayant la valeur d'hôte % (any host), puis 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 root \
    --host=% --instance=[INSTANCE_NAME] --prompt-for-password

REST v1beta4

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

('root'@'%').

Avant d'utiliser les données de requête ci-dessous, 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://www.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://www.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://www.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

Créer un utilisateur

Pour créer un utilisateur, procédez comme suit :

Console

  1. Accédez à la page "Instances Cloud SQL" dans Google Cloud Console.

    Accéder à la page "Instances Cloud SQL"

  2. Sélectionnez l'instance pour ouvrir la page "Présentation" correspondante.
  3. Dans le menu de navigation, sélectionnez Utilisateurs.
  4. Cliquez sur Ajouter un utilisateur.
  5. Sur la page Ajouter un compte utilisateur à l'instance instance_name, ajoutez les informations suivantes :
    • Un nom d'utilisateur
    • Un mot de passe
    • Éventuellement, un hôte

      La valeur par défaut est "%", ce qui signifie que la liste d'hôtes ne fait l'objet d'aucune restriction. Vous pouvez également indiquer une adresse IP ou une plage d'adresses IP. Ainsi, seuls les utilisateurs se connectant à partir de ces adresses peuvent accéder à la base de données.

  6. Cliquez sur Create (Créer).

Les utilisateurs créés via Cloud SQL disposent des droits associés au rôle cloudsqlsuperuser : CREATEROLE, CREATEDB et LOGIN. Un utilisateur créé par ces utilisateurs peut disposer de droits de connexion à la base de données, ce qui peut empêcher sa suppression.

Les utilisateurs créés avec Cloud SQL disposent de tous les droits, à l'exception de FILE et de SUPER. Si vous devez modifier les droits d'un utilisateur, exécutez la commande GRANT ou REVOKE dans le client mysql.

gcloud

Créez l'utilisateur :

gcloud sql users create [user_name] \
   --host=[HOST] --instance=[INSTANCE_NAME] --password=[PASSWORD]

Les utilisateurs créés via Cloud SQL disposent des droits associés au rôle cloudsqlsuperuser : CREATEROLE, CREATEDB et LOGIN. Un utilisateur créé par ces utilisateurs peut disposer de droits de connexion à la base de données, ce qui peut empêcher sa suppression.

Les utilisateurs créés avec Cloud SQL disposent de tous les droits, à l'exception de FILE et de SUPER. Si vous devez modifier les droits d'un utilisateur, exécutez la commande GRANT ou REVOKE dans le client mysql.

Les limites de longueur des noms d'utilisateur sont identiques pour Cloud SQL et pour MySQL sur site : 32 caractères pour MySQL 8.0, 16 caractères pour les versions antérieures.

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 ci-dessous, 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://www.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://www.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://www.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

Les utilisateurs créés via Cloud SQL disposent des droits associés au rôle cloudsqlsuperuser : CREATEROLE, CREATEDB et LOGIN. Un utilisateur créé par ces utilisateurs peut disposer de droits de connexion à la base de données, ce qui peut empêcher sa suppression.

Les utilisateurs créés avec Cloud SQL disposent de tous les droits, à l'exception de FILE et de SUPER. Si vous devez modifier les droits d'un utilisateur, exécutez la commande GRANT ou REVOKE dans le client mysql.

Les limites de longueur des noms d'utilisateur sont identiques pour Cloud SQL et pour MySQL sur site : 32 caractères pour MySQL 8.0, 16 caractères pour les versions antérieures.

Client MySQL

  1. Lorsque l'invite mysql s'affiche, créez l'utilisateur :
      CREATE USER '[USER_NAME]'@'%'
         IDENTIFIED BY '[PASSWORD]';
      
  2. Vous pouvez confirmer la création de l'utilisateur en affichant la table utilisateur :
    SELECT user, host FROM mysql.user;
    
    Voici un exemple de résultat pour une instance de deuxième génération :
    +----------+-----------+
    | user     | host      |
    +----------+-----------+
    | root     | %         |
    | newuser  | %         |
    +----------+-----------+
    1 row in set (0.01 sec)
    
  3. Octroyez des droits à l'utilisateur avec l'instruction GRANT. Pour en savoir plus, consultez la page Privileges Provided by MySQL (Droits octroyés par MySQL).
  4. Videz la table mysql.user pour vous assurer que la modification persiste :
      FLUSH TABLES mysql.user;
    

Modifier un mot de passe utilisateur

Pour modifier le mot de passe d'un utilisateur :

Console

  1. Accédez à la page "Instances Cloud SQL" dans Google Cloud Console.

    Accéder à la page "Instances Cloud SQL"

  2. Sélectionnez l'instance pour ouvrir la page "Présentation" correspondante.
  3. Dans le menu de navigation, sélectionnez Utilisateurs.
  4. Cliquez sur le menu "Autres actions" Icône Autres actions 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] \
   --host=[HOST] --instance=[INSTANCE_NAME] --prompt-for-password

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'@'%'". Si votre utilisateur a un autre hôte, vous devez modifier l'appel de façon à indiquer l'hôte approprié.

Avant d'utiliser les données de requête ci-dessous, 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://www.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://www.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://www.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

Client MySQL

  1. Lorsque l'invite mysql s'affiche, modifiez le mot de passe :
    SET PASSWORD FOR [USER] = PASSWORD('auth_string');
    
  2. Videz la table mysql.user pour vous assurer que la modification persiste :
    FLUSH TABLES mysql.user;
    

Mettre à jour les utilisateurs

Pour mettre à jour les propriétés utilisateur telles que l'hôte ou les droits, vous devez utiliser le client mysql. Pour en savoir plus, consultez la page MySQL User Account Management (Gestion des comptes utilisateur MySQL) dans la documentation MySQL.

Répertorier les utilisateurs

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

Console

  1. Accédez à la page "Instances Cloud SQL" dans Google Cloud Console.

    Accéder à la page "Instances Cloud SQL"

  2. Sélectionnez l'instance pour ouvrir la page "Présentation" correspondante.
  3. Dans le menu de navigation, sélectionnez Utilisateurs.

gcloud

Répertoriez les utilisateurs de cette instance :

gcloud sql users list --instance=[INSTANCE_NAME]

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 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 ci-dessous, 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://www.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 MySQL

Lorsque l'invite mysql s'affiche, répertoriez les utilisateurs MySQL :

SELECT user, host FROM mysql.user;

Voici un exemple de résultat de sortie pour une instance de deuxième génération, pour laquelle seul le compte utilisateur racine est configuré :

+------+-----------+
| user | host      |
+------+-----------+
| root | %         |
+------+-----------+
1 row in set (0.01 sec)

Cet exemple montre les utilisateurs d'une instance pour laquelle l'utilisateur "root'@'%" a été ajouté. Le champ de mot de passe indique le hachage du mot de passe.

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 en réaffecter la propriété, et révoquer les droits accordés par le rôle sur d'autres objets.

Console

  1. Accédez à la page "Instances Cloud SQL" dans Google Cloud Console.

    Accéder à la page "Instances Cloud SQL"

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

gcloud

Supprimez l'utilisateur :

gcloud sql users delete [USER_NAME] --host=[HOST] --instance=[INSTANCE_NAME]

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 ci-dessous, 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://www.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://www.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://www.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

Client MySQL

  1. Lorsque l'invite mysql s'affiche, supprimez l'utilisateur :
    DROP USER '[USER_NAME]'@'[HOST_NAME]';
    

    Pour plus d'informations sur l'instruction DROP USER, consultez la documentation MySQL.

  2. Videz la table mysql.user pour vous assurer que la modification persiste :
    FLUSH TABLES mysql.user;
    

Étapes suivantes