Gerenciar usuários com a autenticação integrada

Nesta página, descrevemos como ativar e usar a autenticação integrada do Cloud SQL.

Para uma visão geral, consulte Autenticação de banco de dados integrada do Cloud SQL.

Antes de criar usuários

  1. Crie uma instância do Cloud SQL. Para mais informações, consulte Criar instâncias.
  2. Se você planeja usar o cliente administrativo do banco de dados para gerenciar usuários, faça o seguinte:

    1. Conecte o cliente à sua instância. Consulte Opções de conexão para aplicativos externos.

    2. Defina a senha para configurar o usuário padrão na instância. Consulte Definir a senha da conta de usuário padrão.

Definir a senha da conta de usuário padrão

Ao criar uma nova instância do Cloud SQL, defina uma senha para a conta de usuário padrão antes de se conectar a ela.

No Cloud SQL para MySQL, o usuário padrão é root@%.

Console

  1. No console do Google Cloud, acesse a página Instâncias do Cloud SQL.

    Acesse "Instâncias do Cloud SQL"

  2. Para abrir a página Visão geral de uma instância, clique no nome da instância.
  3. Selecione Usuários no menu de navegação do SQL.
  4. Encontre o usuário root e selecione Alterar senha no menu "Mais ações" Ícone mais ações..

    Considere as condições listadas para a senha, que são derivadas da política de senha definida para a instância.

  5. Forneça uma senha forte, de que se lembre posteriormente, e clique em OK.

gcloud

Use o comando gcloud sql users set-password da seguinte forma para definir a senha do usuário padrão.

Substitua INSTANCE_NAME pelo nome da instância antes de executar o comando.

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

REST v1

Para atualizar a senha da conta de usuário padrão, use uma solicitação PUT com o método users:update.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o ID do projeto
  • instance-id: o ID da instância buscada
  • password: a senha do usuário

Método HTTP e URL:

PUT https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users?name=root&host=%25

Corpo JSON da solicitação:

{
  "name": "root",
  "password": "password"
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "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

Para atualizar a senha da conta de usuário padrão, use uma solicitação PUT com o método users:update.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o ID do projeto
  • instance-id: o ID da instância buscada
  • password: a senha do usuário

Método HTTP e URL:

PUT https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users?name=root&host=%25

Corpo JSON da solicitação:

{
  "name": "root",
  "password": "password"
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "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"
}

Criar um usuário

Depois de configurar a conta de usuário padrão, você pode criar outros usuários.

Console

  1. No console do Google Cloud, acesse a página Instâncias do Cloud SQL.

    Acesse "Instâncias do Cloud SQL"

  2. Para abrir a página Visão geral de uma instância, clique no nome da instância.
  3. Selecione Usuários no menu de navegação do SQL.
  4. Clique em Adicionar conta de usuário.

    Na página Adicionar uma conta de usuário à instância instance_name, você pode escolher se o usuário se autentica com o método de banco de dados integrado (nome de usuário e senha) ou como um usuário do IAM.

  5. Selecione Autenticação integrada (padrão) e adicione as seguintes informações:
    • Um Nome de usuário
    • Opcional. uma Senha Forneça uma senha forte que você consiga lembrar.
    • Opcional. A política de senha do usuário
    • Na seção Nome do host, o padrão é Permitir qualquer host, o que significa que o usuário pode se conectar de qualquer endereço IP. Opcionalmente, selecione Restringir host por endereço IP ou intervalo de endereços e insira um endereço IP ou intervalo de endereços na seção Host. Assim, o usuário só poderá se conectar pelo endereço IP especificado.
  6. Clique em Add (Adicionar).

Os usuários criados em instâncias que usam o MySQL 8.0 e o método de autenticação do Cloud SQL recebem o papel cloudsqlsuperuser automaticamente e têm os seguintes privilégios associados a ele: CREATEROLE, CREATEDB e LOGIN.

Os usuários criados em instâncias que usam o MySQL 5.7 e o método de autenticação do Cloud SQL recebem todos os privilégios, exceto FILE e SUPER, automaticamente. Se você precisar alterar os privilégios desses usuários, use o comando GRANT ou REVOKE no mysql cliente.

gcloud

Para criar um usuário, use o comando gcloud sql users create.

Substitua:

  • USER_NAME: o nome de usuário.
  • HOST: o nome do host do usuário como um endereço IP ou intervalo de endereços específico.
  • INSTANCE_NAME: o nome da instância
  • PASSWORD: a senha do usuário.

Também é possível adicionar os parâmetros da política de senha do usuário.

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

Os usuários criados em instâncias que usam o MySQL 8.0 e o método de autenticação do Cloud SQL recebem o papel cloudsqlsuperuser automaticamente e têm os seguintes privilégios associados a ele: CREATEROLE, CREATEDB e LOGIN.

Os usuários criados em instâncias que usam o MySQL 5.7 e o método de autenticação do Cloud SQL recebem todos os privilégios, exceto FILE e SUPER, automaticamente. Se você precisar alterar os privilégios desses usuários, use o comando GRANT ou REVOKE no mysql cliente.

Os limites de tamanho de nome de usuário são os mesmos do Cloud SQL e do MySQL no local. O limite é de 32 caracteres no MySQL 8.0 e 16 caracteres nas versões anteriores.

Terraform

Para criar um usuário, use um recurso do 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
}

Aplique as alterações

Para aplicar a configuração do Terraform a um projeto do Google Cloud, siga estas etapas:

  1. Inicie o Cloud Shell.
  2. Defina o projeto do Google Cloud em que a configuração do Terraform será aplicada:
        export GOOGLE_CLOUD_PROJECT=PROJECT_ID
        
  3. Crie um diretório e abra um novo arquivo. O nome do arquivo precisa ter a extensão .tf, por exemplo: main.tf:
        mkdir DIRECTORY && cd DIRECTORY && nano main.tf
        
  4. Copie a amostra para main.tf.
  5. Revise e modifique os parâmetros de amostra para aplicar ao seu ambiente.
  6. Salve as mudanças pressionando Ctrl-x e depois y.
  7. Inicialize o Terraform:
    terraform init
  8. Revise a configuração e verifique se os recursos que o Terraform vai criar ou atualizar correspondem às suas expectativas:
    terraform plan

    Faça as correções necessárias na configuração.

  9. Para aplicar a configuração do Terraform, execute o comando a seguir e digite yes no prompt:
    terraform apply

    Aguarde até que o Terraform exiba a mensagem "Apply complete!".

  10. Abra seu projeto do Google Cloud para ver os resultados. No console do Google Cloud, navegue até seus recursos na IU para verificar se foram criados ou atualizados pelo Terraform.

Excluir as alterações

Para excluir as mudanças, faça o seguinte:

  1. Para desativar a proteção contra exclusão, no arquivo de configuração do Terraform, defina o argumento deletion_protection como false.
    deletion_protection =  "false"
  2. Para aplicar a configuração atualizada do Terraform, execute o comando a seguir e digite yes no prompt:
    terraform apply
  1. Remova os recursos aplicados anteriormente com a configuração do Terraform executando o seguinte comando e inserindo yes no prompt:

    terraform destroy

REST v1

Para criar um usuário, utilize uma solicitação POST com o método users:insert.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o ID do projeto
  • instance-id: o ID da instância buscada
  • user-id: o ID do usuário
  • password: a senha do usuário

Também é possível adicionar os parâmetros da política de senha do usuário.

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "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"
}

Os usuários criados em instâncias que usam o MySQL 8.0 e o método de autenticação do Cloud SQL recebem o papel cloudsqlsuperuser automaticamente e têm os seguintes privilégios associados a ele: CREATEROLE, CREATEDB e LOGIN.

Os usuários criados em instâncias que usam o MySQL 5.7 e o método de autenticação do Cloud SQL recebem todos os privilégios, exceto FILE e SUPER, automaticamente. Se você precisar alterar os privilégios desses usuários, use o comando GRANT ou REVOKE no mysql cliente.

Os limites de tamanho de nome de usuário são os mesmos do Cloud SQL e do MySQL no local. O limite é de 32 caracteres no MySQL 8.0 e 16 caracteres nas versões anteriores.

REST v1beta4

Para criar um usuário, utilize uma solicitação POST com o método users:insert.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o ID do projeto
  • instance-id: o ID da instância buscada
  • user-id: o ID do usuário
  • password: a senha do usuário

Também é possível adicionar os parâmetros da política de senha do usuário.

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "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"
}

Os usuários criados em instâncias que usam o MySQL 8.0 e o método de autenticação do Cloud SQL recebem o papel cloudsqlsuperuser automaticamente e têm os seguintes privilégios associados a ele: CREATEROLE, CREATEDB e LOGIN.

Os usuários criados em instâncias que usam o MySQL 5.7 e o método de autenticação do Cloud SQL recebem todos os privilégios, exceto FILE e SUPER, automaticamente. Se você precisar alterar os privilégios desses usuários, use o comando GRANT ou REVOKE no mysql cliente.

Os limites de tamanho de nome de usuário são os mesmos do Cloud SQL e do MySQL no local. O limite é de 32 caracteres no MySQL 8.0 e 16 caracteres nas versões anteriores.

Cliente MySQL

  1. Para criar um usuário, na solicitação mysql, use a seguinte instrução CREATE USER:
      CREATE USER 'USER_NAME'@'%'
         IDENTIFIED BY 'PASSWORD';
      

    Também é possível adicionar os parâmetros da política de senha do usuário.

  2. Confirme a criação do usuário exibindo a tabela de usuários:
    SELECT user, host FROM mysql.user;
    
    Em uma instância de segunda geração, a saída é semelhante a este exemplo:
    +----------+-----------+
    | user     | host      |
    +----------+-----------+
    | root     | %         |
    | newuser  | %         |
    +----------+-----------+
    1 row in set (0.01 sec)
    
  3. Forneça os privilégios ao usuário com a instrução GRANT (em inglês). Para mais informações, consulte os Privilégios fornecidos pelo MySQL (em inglês).
  4. Limpe a tabela mysql.user para garantir que a alteração persista:
      FLUSH TABLES mysql.user;
    

Listar usuários

Console

  1. No console do Google Cloud, acesse a página Instâncias do Cloud SQL.

    Acesse "Instâncias do Cloud SQL"

  2. Para abrir a página Visão geral de uma instância, clique no nome da instância.
  3. Selecione Usuários no menu de navegação do SQL.

    A lista mostra os tipos User name, Host name e Authentication de cada usuário.

    Além disso, para o tipo de autenticação integrado, Password status também é indicado.

gcloud

Use o comando gcloud sql users list para listar os usuários desta instância:

gcloud sql users list \
--instance=INSTANCE_NAME

O comando retorna Name, Host e a autenticação Type para cada usuário.

Além disso, para o tipo de autenticação integrado, as configurações e o status da política de senha são retornados. Exemplo:

    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

Para listar os usuários definidos para uma instância, use uma solicitação GET com o método users:list.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o ID do projeto
  • instance-id: o ID da instância buscada

Método HTTP e URL:

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

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

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

Se uma política de senha do usuário tiver sido definida, a seção items da resposta incluirá uma seção passwordPolicy. Veja um exemplo a seguir.

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

REST v1beta4

Para listar os usuários definidos para uma instância, use uma solicitação GET com o método users:list.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o ID do projeto
  • instance-id: o ID da instância buscada

Método HTTP e URL:

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

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

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

Se uma política de senha do usuário tiver sido definida, a seção items da resposta incluirá uma seção passwordPolicy. Veja um exemplo a seguir.

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

Cliente MySQL

Para listar usuários do MySQL, no prompt mysql, use a seguinte instrução SELECT:

SELECT user, host FROM mysql.user;

Em uma instância de segunda geração com apenas a conta de usuário raiz configurada, a saída é semelhante a este exemplo:

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

Este exemplo mostra os usuários de uma instância na qual o usuário 'root'@'%' foi adicionado. O campo da senha mostra o hash da senha.

Alterar uma senha de usuário

As senhas de usuário podem ser alteradas de uma das seguintes maneiras.

Console

  1. No console do Google Cloud, acesse a página Instâncias do Cloud SQL.

    Acesse "Instâncias do Cloud SQL"

  2. Para abrir a página Visão geral de uma instância, clique no nome da instância.
  3. Selecione Usuários no menu de navegação do SQL.
  4. Selecione o usuário a ser atualizado e clique em "Mais ações" Ícone mais ações..
  5. Selecione Alterar senha.
  6. Especifique uma nova senha.

    Além disso, se você quiser continuar usando sua senha mais antiga, selecione o botão Ativar senha dupla.

  7. Clique em OK.

gcloud

Use o comando gcloud sql users set-password para alterar uma senha.

Substitua:

  • USER_NAME: o nome de usuário.
  • HOST: o nome do host do usuário como um endereço IP ou intervalo de endereços específico.
  • INSTANCE_NAME: o nome da instância
  • PASSWORD: uma senha. Ela precisa atender aos requisitos das políticas de senha, se definidos.

Opcionalmente, para o MySQL 8.0, você pode continuar permitindo que o usuário use a senha mais antiga com a opção --retain-password. Para descartar a senha antiga, use a opção --discard-dual-password.

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

REST v1

Para alterar uma senha de usuário, utilize uma solicitação PUT com o método users:update.

A solicitação a seguir atualiza a senha da conta do usuário user_name'@'%. Se seu usuário tiver um host diferente, você precisará modificar a chamada com o host correto.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o ID do projeto
  • instance-id: o ID da instância buscada
  • user-id: o ID do usuário
  • password: a senha do usuário
  • dual-password: um destes valores de enumeração:
    • DUAL_PASSWORD: o usuário pode continuar usando a senha antiga.
    • NO_DUAL_PASSWORD: o usuário não pode usar a senha antiga.
    • NO_MODIFY_DUAL_PASSWORD: o status de senha dupla permanece inalterado.

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "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

Para alterar uma senha de usuário, utilize uma solicitação PUT com o método users:update.

A solicitação a seguir atualiza a senha da conta do usuário user_name'@'%. Se seu usuário tiver um host diferente, você precisará modificar a chamada com o host correto.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o ID do projeto
  • instance-id: o ID da instância buscada
  • user-id: o ID do usuário
  • password: a senha do usuário
  • dual-password: um destes valores de enumeração:
    • DUAL_PASSWORD: o usuário pode continuar usando a senha antiga.
    • NO_DUAL_PASSWORD: o usuário não pode usar a senha antiga.
    • NO_MODIFY_DUAL_PASSWORD: o status de senha dupla permanece inalterado.

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "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"
}

Cliente MySQL

  1. Para alterar a senha, na solicitação mysql, use a seguinte instrução SET PASSWORD:
    SET PASSWORD FOR USER_NAME = PASSWORD('auth_string');
    
  2. Limpe a tabela mysql.user para garantir que a alteração persista:
    FLUSH TABLES mysql.user;
    

Se um usuário estiver bloqueado devido às configurações de política de senha, mude a senha para desbloqueá-lo. Confirme que as senhas, quando alteradas, sigam a política de senhas.

Definir uma política de senha do usuário

É possível definir uma política de senha ao criar um usuário com o tipo de autenticação integrado.

Você pode modificar uma política ou defini-la da seguinte maneira.

Console

  1. No console do Google Cloud, acesse a página Instâncias do Cloud SQL.

    Acesse "Instâncias do Cloud SQL"

  2. Para abrir a página Visão geral de uma instância, clique no nome da instância.
  3. Selecione Usuários no menu de navegação do SQL.
  4. Clique em "Mais ações" Ícone mais ações. para o usuário cuja política você quer alterar.
  5. Selecione Editar política de senha.
  6. Na seção Política de senha, selecione uma ou mais das seguintes opções:
    • Definir a senha para expirar: especifica o número de dias após o qual a senha expira e o usuário precisa criar uma nova.
    • Bloquear após tentativas malsucedidas: especifica o número de vezes que um usuário pode tentar a senha de forma incorreta antes do bloqueio da conta.

      Compatível apenas com o Cloud SQL para MySQL 8.0.

    • Exigir senha atual quando a senha for alterada: exige que os usuários insiram a senha ao tentar alterá-la.

gcloud

Para definir a política de senha do usuário, use o comando gcloud sql users set-password-policy.

Use o --password-policy-enable-password-verification para tornar obrigatório a inserção da senha dos usuários quando eles tentarem mudar a senha. Para desativar esse parâmetro, use --no-password-policy-enable-password-verification.

Substitua:

  • USER_NAME: o nome de usuário.
  • INSTANCE_NAME: o nome da instância
  • PASSWORD_POLICY_ALLOWED_FAILED_ATTEMPTS (opcional): o número de vezes que um usuário pode tentar a senha incorretamente antes de a conta ser bloqueada. Use --password-policy-enable-failed-attempts-check para ativar e --no-password-policy-enable-failed-attempts-check para desativar a verificação.
  • PASSWORD_POLICY_PASSWORD_EXPIRATION_DURATION (opcional): especifica o número de dias após o qual a senha expira e o usuário precisa criar uma nova.
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

Para limpar uma política de senha do usuário, use o parâmetro --clear-password-policy.

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

Para ver a política de senha do usuário, consulte List users.

REST v1

Para definir uma política de senha do usuário, use uma solicitação PUT com o método users:update.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o ID do projeto
  • instance-id: o ID da instância
  • user-id: o ID do usuário
  • password: a senha do usuário
  • failed-attempts-check: defina como true para ativar uma verificação para o número de tentativas malsucedidas de login após as quais a conta é bloqueada.
  • no-of-attempts: o número de tentativas malsucedidas de login após as quais a conta é bloqueada.
  • password-expiration-duration: o número de dias após o qual a senha expira e o usuário precisa criar uma nova.
  • verify-password: defina como true para exigir que os usuários insiram a senha existente ao tentar alterar a senha.

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

Para ver a política de senha do usuário, consulte List users.

REST v1beta4

Para definir uma política de senha do usuário, use uma solicitação PUT com o método users:update.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o ID do projeto
  • instance-id: o ID da instância
  • user-id: o ID do usuário
  • password: a senha do usuário
  • failed-attempts-check: opcional. Defina como true para ativar uma verificação para o número de tentativas malsucedidas de login após as quais a conta é bloqueada.
  • no-of-attempts: o número de tentativas malsucedidas de login após as quais a conta é bloqueada.
  • password-expiration-duration: o número de dias após o qual a senha expira e o usuário precisa criar uma nova.
  • verify-password: opcional. Defina como true para exigir que os usuários insiram a senha deles ao tentar mudar a senha.

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

Para ver a política de senha do usuário, consulte List users.

Cliente MySQL

Para definir uma política de senha do usuário, na solicitação mysql, use a seguinte instrução ALTER USER:

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

Substitua:

  • USER_NAME: o nome de usuário.
  • ALLOWED_FAILED_ATTEMPTS (opcional): o número de vezes que um usuário pode tentar a senha incorretamente antes de a conta ser bloqueada.
  • PASSWORD_EXPIRATION_DURATION (opcional): especifica o número de dias após o qual a senha expira e o usuário precisa criar uma nova.

Use a opção PASSWORD REQUIRE CURRENT para exigir que os usuários insiram a senha existente ao tentar mudá-la.

Para ver a política de senha do usuário, consulte List users.

Remover um usuário

O usuário padrão pode remover usuários.

Antes de remover um usuário, você precisa descartar todos os objetos que são da propriedade dele ou reatribuir a propriedade e revogar os privilégios concedidos ao papel em outros objetos.

Console

  1. No console do Google Cloud, acesse a página Instâncias do Cloud SQL.

    Acesse "Instâncias do Cloud SQL"

  2. Para abrir a página Visão geral de uma instância, clique no nome da instância.
  3. Selecione Usuários no menu de navegação do SQL.
  4. Selecione o usuário a ser removido e clique em Mais ações Ícone mais ações..
  5. Selecione Remover e, em seguida, selecione Remover novamente.

gcloud

Use o comando gcloud sql users delete para remover um usuário.

Substitua:

  • USER_NAME: o nome de usuário.
  • HOST: o nome do host do usuário como um endereço IP ou intervalo de endereços específico.
  • INSTANCE_NAME: o nome da instância
gcloud sql users delete USER_NAME \
--host=HOST \
--instance=INSTANCE_NAME

REST v1

A solicitação abaixo usa o método users:delete para excluir a conta de usuário especificada.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o ID do projeto
  • instance-id: o ID da instância buscada
  • username: o endereço de e-mail do usuário ou da conta de serviço

Método HTTP e URL:

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

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "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

A solicitação abaixo usa o método users:delete para excluir a conta de usuário especificada.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o ID do projeto
  • instance-id: o ID da instância buscada
  • username: o endereço de e-mail do usuário ou da conta de serviço

Método HTTP e URL:

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

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "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"
}

Cliente MySQL

  1. Para excluir um usuário, na solicitação mysql, use a seguinte instrução DROP USER:
    DROP USER 'USER_NAME'@'HOST_NAME';
    
  2. Limpe a tabela mysql.user para garantir que a alteração persista:
    FLUSH TABLES mysql.user;
    

Atualizar as propriedades do usuário

Para atualizar as propriedades do usuário, como host ou privilégios, use o cliente mysql. Para mais informações, consulte Gerenciamento de contas de usuário do MySQL (em inglês) na documentação do MySQL.

A seguir