Gérer les utilisateurs avec l'authentification intégrée

Cette page explique comment activer et utiliser l'authentification intégrée Cloud SQL.

Pour en savoir plus, consultez la section Authentification intégrée à la base de données Cloud SQL.

Avant de créer des utilisateurs

  1. Créer une instance Cloud SQL Pour en savoir plus, consultez la page Créer des instances.
  2. Si vous prévoyez de gérer les utilisateurs à l'aide du client d'administration de votre base de données, procédez comme suit:

    1. Connectez le client à votre instance. Consultez la page Options de connexion pour les applications externes.

    2. Configurez l'utilisateur par défaut sur l'instance en définissant le mot de passe. Consultez la section Définir le mot de passe du compte utilisateur par défaut.

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

Lorsque vous créez une instance Cloud SQL, vous devez définir un mot de passe pour le compte utilisateur par défaut avant de pouvoir vous connecter à l'instance.

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

Console

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

    Accéder à la page Instances Cloud SQL

  2. Pour ouvrir la page Présentation d'une instance, cliquez sur son nom.
  3. Dans le menu de navigation SQL, sélectionnez Utilisateurs.
  4. Recherchez l'utilisateur root et sélectionnez Modifier le mot de passe dans le menu "Autres actions" Icône Plus.

    Tenez compte des dispositions du mot de passe, qui sont dérivées de la stratégie de mot de passe définie pour l'instance.

  5. Indiquez un mot de passe sécurisé facile à mémoriser, puis cliquez sur OK.

gcloud

Exécutez la commande gcloud sql users set-password comme suit pour définir le mot de passe de l'utilisateur par défaut.

Remplacez INSTANCE_NAME par le nom de l'instance avant d'exécuter la commande.

gcloud sql users set-password root \
--host=% \
--instance=INSTANCE_NAME \
--prompt-for-password

REST v1

Pour mettre à jour le mot de passe du compte utilisateur par défaut, exécutez une requête PUT avec la méthode users:update.

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
  • 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=root&host=%25

Corps JSON de la requête :

{
  "name": "root",
  "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

Pour mettre à jour le mot de passe du compte utilisateur par défaut, exécutez une requête PUT avec la méthode users:update.

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
  • 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=root&host=%25

Corps JSON de la requête :

{
  "name": "root",
  "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 compte utilisateur

Après avoir configuré le compte utilisateur par défaut, vous pouvez créer d'autres utilisateurs.

Console

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

    Accéder à la page Instances Cloud SQL

  2. Pour ouvrir la page Présentation d'une instance, cliquez sur son nom.
  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.

  5. Sélectionnez Authentification intégrée (valeur par défaut) et ajoutez les informations suivantes :
    • Un nom d'utilisateur
    • Facultatif. Un mot de passe Indiquez un mot de passe sécurisé facile à mémoriser.
    • Facultatif. Les règles relatives aux mots de passe de l'utilisateur
    • Dans la section Nom d'hôte, la valeur par défaut est Autoriser tous les hôtes, ce qui signifie que l'utilisateur peut se connecter depuis n'importe quelle adresse IP. Vous pouvez également sélectionner Restreindre l'hôte par adresse IP ou plage d'adresses, puis saisir une adresse IP ou une plage d'adresses dans la section Hôte. L'utilisateur peut alors se connecter uniquement à partir de l'adresse IP ou des adresses spécifiées.
  6. Cliquez sur Ajouter.

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

Les utilisateurs créés sur des instances exécutant MySQL 5.7 et la méthode d'authentification de Cloud SQL disposent automatiquement de tous les droits, à l'exception de FILE et SUPER. Si vous devez modifier les droits de ces utilisateurs, utilisez la commande GRANT ou REVOKE dans le client mysql.

gcloud

Pour créer un utilisateur, utilisez la commande gcloud sql users create.

Remplacez les éléments suivants :

  • USER_NAME : nom d'utilisateur.
  • HOST: nom d'hôte de l'utilisateur en tant qu'adresse IP ou plage d'adresses spécifique.
  • INSTANCE_NAME : nom de l'instance
  • PASSWORD : mot de passe de l'utilisateur

Vous pouvez également ajouter les paramètres Stratégie de mot de passe utilisateur.

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

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

Les utilisateurs créés sur des instances exécutant MySQL 5.7 et la méthode d'authentification de Cloud SQL disposent automatiquement de tous les droits, à l'exception de FILE et SUPER. Si vous devez modifier les droits de ces utilisateurs, utilisez 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.

Terraform

Pour créer un utilisateur, utilisez une ressource Terraform.

resource "random_password" "pwd" {
    length = 16
    special = false
}

resource "google_sql_user" "user" {
    name = "user"
    instance = google_sql_database_instance.instance.name
    password = random_password.pwd.result
}

Appliquer les modifications

Pour appliquer votre configuration Terraform dans un projet Google Cloud, procédez comme suit :

  1. Lancez Cloud Shell.
  2. Définissez le projet Google Cloud auquel vous souhaitez appliquer la configuration Terraform :
        export GOOGLE_CLOUD_PROJECT=PROJECT_ID
        
  3. Créez un répertoire et ouvrez un nouveau fichier dans ce répertoire. Le nom du fichier doit comporter l'extension .tf, par exemple main.tf :
        mkdir DIRECTORY && cd DIRECTORY && nano main.tf
        
  4. Copiez l'exemple dans main.tf.
  5. Examinez et modifiez les exemples de paramètres à appliquer à votre environnement.
  6. Enregistrez vos modifications en appuyant sur Ctrl-x, puis sur y.
  7. Initialisez Terraform :
    terraform init
  8. Examinez la configuration et vérifiez que les ressources que Terraform va créer ou mettre à jour correspondent à vos attentes :
    terraform plan

    Corrigez les modifications de la configuration si nécessaire.

  9. Appliquez la configuration Terraform en exécutant la commande suivante et en saisissant yes lorsque vous y êtes invité :
    terraform apply

    Attendez que Terraform affiche le message "Apply completed!" (Application terminée).

  10. Ouvrez votre projet Google Cloud pour afficher les résultats. Dans la console Google Cloud, accédez à vos ressources dans l'interface utilisateur pour vous assurer que Terraform les a créées ou mises à jour.

Supprimer les modifications

Pour supprimer vos modifications, procédez comme suit :

  1. Pour désactiver la protection contre la suppression, définissez l'argument deletion_protection sur false dans le fichier de configuration Terraform.
    deletion_protection =  "false"
  2. Appliquez la configuration Terraform mise à jour en exécutant la commande suivante et en saisissant yes lorsque vous y êtes invité :
    terraform apply
  1. Supprimez les ressources précédemment appliquées à votre configuration Terraform en exécutant la commande suivante et en saisissant yes à l'invite :

    terraform destroy

REST v1

Pour créer un utilisateur, exécutez une requête POST avec la méthode users:insert.

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

Vous pouvez également ajouter les paramètres Stratégie de mot de passe 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 exécutant MySQL 8.0 et la méthode d'authentification de Cloud SQL reçoivent automatiquement le rôle cloudsqlsuperuser et disposent des droits associés à ce rôle suivants : CREATEROLE, CREATEDB et LOGIN.

Les utilisateurs créés sur des instances exécutant MySQL 5.7 et la méthode d'authentification de Cloud SQL disposent automatiquement de tous les droits, à l'exception de FILE et SUPER. Si vous devez modifier les droits de ces utilisateurs, utilisez 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

Pour créer un utilisateur, exécutez une requête POST avec la méthode users:insert.

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

Vous pouvez également ajouter les paramètres Stratégie de mot de passe 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 exécutant MySQL 8.0 et la méthode d'authentification de Cloud SQL reçoivent automatiquement le rôle cloudsqlsuperuser et disposent des droits associés à ce rôle suivants : CREATEROLE, CREATEDB et LOGIN.

Les utilisateurs créés sur des instances exécutant MySQL 5.7 et la méthode d'authentification de Cloud SQL disposent automatiquement de tous les droits, à l'exception de FILE et SUPER. Si vous devez modifier les droits de ces utilisateurs, utilisez 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. Pour créer un utilisateur, lorsque l'invite mysql s'affiche, utilisez l'instruction CREATE USER suivante:
      CREATE USER 'USER_NAME'@'%'
         IDENTIFIED BY 'PASSWORD';
      

    Vous pouvez également ajouter les paramètres Stratégie de mot de passe utilisateur.

  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;
    

Répertorier les utilisateurs

Console

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

    Accéder à la page Instances Cloud SQL

  2. Pour ouvrir la page Présentation d'une instance, cliquez sur son nom.
  3. Dans le menu de navigation SQL, sélectionnez Utilisateurs.

    La liste affiche le type User name, Host name et Authentication pour chaque utilisateur.

    En outre, pour le type d'authentification intégré, l'élément Password status est également indiqué.

gcloud

Utilisez la commande gcloud sql users list pour répertorier les utilisateurs de cette instance:

gcloud sql users list \
--instance=INSTANCE_NAME

La commande renvoie les éléments Name, Host et Type d'authentification pour chaque utilisateur.

En outre, pour le type d'authentification intégré, les paramètres et l'état de la règle de mot de passe sont renvoyés. Exemple :

    NAME    HOST    TYPE        PASSWORD_POLICY
    user1           BUILT_IN    {'allowedFailedAttempts': 2,
                                 'enableFailedAttemptsCheck': True,
                                 'passwordExpirationDuration': '7d',
                                 'status': {
                                   'locked': True,
                                   'passwordExpirationTime': '2022-07-01T19:53:45.822742904Z'
                                 }
                                }
   

REST v1

Pour répertorier les utilisateurs définis pour une instance, utilisez une requête GET avec la méthode users:list.

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://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"
        ]
      }
    },
    {
      ...
    },
    {
      ...
    }
  ]
}

Si une règle de mot de passe utilisateur a été définie, la section items de la réponse inclut une section passwordPolicy. Voici un exemple :

  {
  ...
  "passwordValidationUserPolicy" : {
    {
      "enableFailedAttemptsCheck" : true,
      "allowedFailedAttempts" : 8,
      "passwordExpirationDuration" : "7d",
      "enablePasswordVerification" : true
    }
  },
  ...
}
  

REST v1beta4

Pour répertorier les utilisateurs définis pour une instance, utilisez une requête GET avec la méthode users:list.

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://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"
        ]
      }
    },
    {
      ...
    },
    {
      ...
    }
  ]
}

Si une règle de mot de passe utilisateur a été définie, la section items de la réponse inclut une section passwordPolicy. Voici un exemple :

  {
  ...
  "passwordValidationUserPolicy" : {
    {
      "enableFailedAttemptsCheck" : true,
      "allowedFailedAttempts" : 8,
      "passwordExpirationDuration" : "7d",
      "enablePasswordVerification" : true
    }
  },
  ...
}
  

Client mysql

Pour répertorier les utilisateurs MySQL, à l'invite de mysql, utilisez l'instruction SELECT suivante:

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.

Modifier un mot de passe utilisateur

Les mots de passe utilisateur peuvent être modifiés de l'une des manières suivantes.

Console

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

    Accéder à la page Instances Cloud SQL

  2. Pour ouvrir la page Présentation d'une instance, cliquez sur son nom.
  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.
  6. Spécifiez un nouveau mot de passe.

    En outre, si vous souhaitez continuer à utiliser votre ancien mot de passe, sélectionnez le bouton Activer le mot de passe double.

  7. Cliquez sur OK.

gcloud

Utilisez la commande gcloud sql users set-password pour modifier un mot de passe.

Remplacez les éléments suivants :

  • USER_NAME : nom d'utilisateur.
  • HOST: nom d'hôte de l'utilisateur en tant qu'adresse IP ou plage d'adresses spécifique.
  • INSTANCE_NAME : nom de l'instance
  • PASSWORD : mot de passe Si elle est définie, elle doit répondre aux exigences des règles relatives aux mots de passe.

Si vous le souhaitez, pour MySQL 8.0, vous pouvez toujours autoriser l'utilisateur à utiliser l'ancien mot de passe avec l'option --retain-password. Pour supprimer l'ancien mot de passe, utilisez l'option --discard-dual-password.

gcloud sql users set-password USER_NAME \
--host=HOST \
--instance=INSTANCE_NAME \
--password=PASSWORD

REST v1

Pour modifier le mot de passe d'un utilisateur, exécutez une requête PUT avec la méthode users:update.

La requête suivante met à jour le mot de passe du compte utilisateur user_name'@'%. Si l'utilisateur a un hôte différent, 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
  • dual-password: l'une des valeurs d'énumération suivantes :
    • DUAL_PASSWORD: l'utilisateur peut continuer à utiliser l'ancien mot de passe.
    • NO_DUAL_PASSWORD: l'utilisateur ne peut pas utiliser l'ancien mot de passe.
    • NO_MODIFY_DUAL_PASSWORD: l'état du double mot de passe reste inchangé.

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",
  "retainedPassword" : "dual-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

Pour modifier le mot de passe d'un utilisateur, exécutez une requête PUT avec la méthode users:update.

La requête suivante met à jour le mot de passe du compte utilisateur user_name'@'%. Si l'utilisateur a un hôte différent, 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
  • dual-password: l'une des valeurs d'énumération suivantes :
    • DUAL_PASSWORD: l'utilisateur peut continuer à utiliser l'ancien mot de passe.
    • NO_DUAL_PASSWORD: l'utilisateur ne peut pas utiliser l'ancien mot de passe.
    • NO_MODIFY_DUAL_PASSWORD: l'état du double mot de passe reste inchangé.

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",
  "retainedPassword" : "dual-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 mysql

  1. Pour modifier le mot de passe, lorsque l'invite mysql s'affiche, utilisez l'instruction SET PASSWORD suivante :
    SET PASSWORD FOR USER_NAME = PASSWORD('auth_string');
    
  2. Videz la table mysql.user pour vous assurer que la modification persiste :
    FLUSH TABLES mysql.user;
    

Si un utilisateur est verrouillé en raison des paramètres de règles relatives aux mots de passe, modifiez son mot de passe pour le déverrouiller. Assurez-vous que les mots de passe, lorsqu'ils sont modifiés, respectent la règle relative aux mots de passe.

Définir des règles relatives aux mots de passe des utilisateurs

Vous pouvez définir une stratégie de mots de passe lors de la création d'un utilisateur avec le type d'authentification intégré.

Vous pouvez modifier une règle ou la définir comme ci-dessous.

Console

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

    Accéder à la page Instances Cloud SQL

  2. Pour ouvrir la page Présentation d'une instance, cliquez sur son nom.
  3. Dans le menu de navigation SQL, sélectionnez Utilisateurs.
  4. Cliquez sur le menu "Autres actions" Icône Plus correspondant à l'utilisateur pour lequel vous souhaitez modifier la règle.
  5. Sélectionnez Modifier la règle de mot de passe.
  6. Dans la section Règles relatives aux mots de passe, sélectionnez une ou plusieurs des options suivantes :
    • Définir l'expiration du mot de passe : indique le nombre de jours au bout duquel le mot de passe expire et l'utilisateur doit en créer un autre.
    • Verrouillage après des tentatives infructueuses : indique le nombre maximum de tentatives de connexion infructueuses (mot de passe incorrect) accepté pour un utilisateur avant que le compte ne soit verrouillé.

      Uniquement compatible avec Cloud SQL pour MySQL 8.0.

    • Exiger le mot de passe actuel en cas de modification du mot de passe : oblige les utilisateurs à saisir leur mot de passe existant lorsqu'ils tentent de le modifier.

gcloud

Pour définir la règle de mot de passe utilisateur, utilisez la commande gcloud sql users set-password-policy.

Utilisez --password-policy-enable-password-verification pour rendre le mot de passe existant obligatoire pour les utilisateurs lorsqu'ils tentent de modifier le mot de passe. Pour désactiver ce paramètre, utilisez --no-password-policy-enable-password-verification.

Remplacez les éléments suivants :

  • USER_NAME : nom d'utilisateur.
  • INSTANCE_NAME : nom de l'instance
  • PASSWORD_POLICY_ALLOWED_FAILED_ATTEMPTS (facultatif) : nombre de fois qu'un utilisateur peut essayer de définir le mot de passe de manière incorrecte avant le verrouillage du compte. Utilisez --password-policy-enable-failed-attempts-check pour activer et --no-password-policy-enable-failed-attempts-check pour désactiver la vérification.
  • PASSWORD_POLICY_PASSWORD_EXPIRATION_DURATION (facultatif) : indique le nombre de jours avant que le mot de passe expire et que l'utilisateur doive en créer un autre.
gcloud sql users set-password-policy USER_NAME \
--instance=INSTANCE_NAME \
--password-policy-enable-failed-attempts-check \
--password-policy-allowed-failed-attempts=PASSWORD_POLICY_ALLOWED_FAILED_ATTEMPTS \
--password-policy-password-expiration-duration=PASSWORD_POLICY_PASSWORD_EXPIRATION_DURATION \
--password-policy-enable-password-verification

Pour effacer une règle relative aux mots de passe utilisateur, utilisez le paramètre --clear-password-policy.

gcloud sql users set-password-policy USER_NAME \
--instance=INSTANCE_NAME \
--clear-password-policy

Pour afficher les règles relatives aux mots de passe utilisateur, consultez la page List users.

REST v1

Pour définir une règle de mot de passe utilisateur, exécutez une requête PUT avec la méthode users:update.

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
  • user-id : ID de l'utilisateur
  • password: mot de passe de l'utilisateur
  • failed-attempts-check: définissez la valeur sur true pour permettre de vérifier le nombre de tentatives de connexion infructueuses après lequel le compte est verrouillé.
  • no-of-attempts: nombre de tentatives de connexion infructueuses, après quoi le compte est verrouillé.
  • password-expiration-duration : nombre de jours avant que le mot de passe expire et que l'utilisateur doive en créer un autre.
  • verify-password: définissez cette option sur true pour rendre obligatoire la saisie du mot de passe existant par les utilisateurs qui tentent de modifier le mot de passe.

Méthode HTTP et URL :

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

Corps JSON de la requête :

{
  "name": "user-id",
  "password": "password",
  "data":
  {
    "passwordValidationUserPolicy" : {
      {
        "enableFailedAttemptsCheck" : "failed-attempts-check",
        "allowedFailedAttempts" : "no-of-attempts",
        "passwordExpirationDuration" : "password-expiration-duration",
        "enablePasswordVerification" : "verify-password"
      }
    },
  }
}

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

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

Pour afficher les règles relatives aux mots de passe utilisateur, consultez la page List users.

REST v1beta4

Pour définir une règle de mot de passe utilisateur, exécutez une requête PUT avec la méthode users:update.

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
  • user-id : ID de l'utilisateur
  • password: mot de passe de l'utilisateur
  • failed-attempts-check : facultatif. Définissez la valeur sur true pour permettre de vérifier le nombre de tentatives de connexion infructueuses après quoi le compte est verrouillé.
  • no-of-attempts: nombre de tentatives de connexion infructueuses, après quoi le compte est verrouillé.
  • password-expiration-duration : nombre de jours avant que le mot de passe expire et que l'utilisateur doive en créer un autre.
  • verify-password : facultatif. Définissez la valeur sur true pour obliger les utilisateurs à saisir leur mot de passe existant lorsqu'ils tentent de modifier le mot de passe.

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",
  "data":
  {
    "passwordValidationUserPolicy" : {
      {
        "enableFailedAttemptsCheck" : "failed-attempts-check",
        "allowedFailedAttempts" : "no-of-attempts",
        "passwordExpirationDuration" : "password-expiration-duration",
        "enablePasswordVerification" : "verify-password"
      }
    },
  }
}

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

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

Pour afficher les règles relatives aux mots de passe utilisateur, consultez la page List users.

Client mysql

Pour définir une stratégie de mot de passe utilisateur, lorsque l'invite mysql s'affiche, utilisez l'instruction ALTER USER suivante:

ALTER USER USER_NAME
    FAILED_LOGIN_ATTEMPTS ALLOWED_FAILED_ATTEMPTS
    PASSWORD EXPIRE INTERVAL PASSWORD_EXPIRATION_DURATION DAY
    PASSWORD REQUIRE CURRENT;

Remplacez les éléments suivants :

  • USER_NAME : nom d'utilisateur.
  • ALLOWED_FAILED_ATTEMPTS (facultatif) : nombre de fois qu'un utilisateur peut essayer de définir le mot de passe de manière incorrecte avant le verrouillage du compte.
  • PASSWORD_EXPIRATION_DURATION (facultatif) : indique le nombre de jours avant que le mot de passe expire et que l'utilisateur doive en créer un autre.

Utilisez l'option PASSWORD REQUIRE CURRENT pour obliger les utilisateurs à saisir leur mot de passe existant lorsqu'ils tentent de le modifier.

Pour afficher les règles relatives aux mots de passe utilisateur, consultez la page List users.

Supprimer un utilisateur

L'utilisateur par défaut peut supprimer des utilisateurs.

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. Pour ouvrir la page Présentation d'une instance, cliquez sur son nom.
  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

Utilisez la commande gcloud sql users delete pour supprimer un utilisateur.

Remplacez les éléments suivants :

  • USER_NAME : nom d'utilisateur.
  • HOST: nom d'hôte de l'utilisateur en tant qu'adresse IP ou plage d'adresses spécifique.
  • INSTANCE_NAME : nom de l'instance
gcloud sql users delete USER_NAME \
--host=HOST \
--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
  • username : l'adresse e-mail de l'utilisateur ou du compte de service

Méthode HTTP et URL :

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

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
  • username : l'adresse e-mail de l'utilisateur ou du compte de service

Méthode HTTP et URL :

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

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 mysql

  1. Pour supprimer un utilisateur, lorsque l'invite mysql s'affiche, utilisez l'instruction DROP USER suivante:
    DROP USER 'USER_NAME'@'HOST_NAME';
    
  2. Videz la table mysql.user pour vous assurer que la modification persiste :
    FLUSH TABLES mysql.user;
    

Mettre à jour les propriétés utilisateur

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.

Étape suivante