Faça a gestão de utilizadores com a autenticação incorporada

Esta página descreve como ativar e usar a autenticação integrada do Cloud SQL.

Para uma vista geral, consulte o artigo Autenticação de base de dados incorporada do Cloud SQL.

Antes de criar utilizadores

  1. Crie uma instância do Cloud SQL. Para mais informações, consulte o artigo Crie instâncias.
  2. Ative as políticas de palavras-passe para a instância. Para mais informações, consulte as políticas de palavras-passe de instâncias.
  3. Se planeia usar o cliente administrativo da sua base de dados para gerir utilizadores, faça o seguinte:

    1. Associe o cliente à sua instância. Consulte as Opções de ligação para aplicações externas.

    2. Configure o utilizador predefinido na instância definindo a palavra-passe. Consulte o artigo Defina a palavra-passe da conta de utilizador predefinida.

Defina a palavra-passe da conta de utilizador predefinida

Quando cria uma nova instância do Cloud SQL, tem de definir uma palavra-passe para a conta de utilizador predefinida antes de poder estabelecer ligação à instância.

Para o Cloud SQL para MySQL, o utilizador predefinido é root@%. Isto significa um utilizador da base de dados com o nome de utilizador root que pode estabelecer ligação a partir de qualquer anfitrião (@%).

Consola

  1. Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.

    Aceda a Instâncias do Cloud SQL

  2. Para abrir a página Vista geral de uma instância, clique no nome da instância.
  3. Selecione Utilizadores no menu de navegação do SQL.
  4. Encontre o utilizador root e, em seguida, selecione Alterar palavra-passe no menu de mais ações Ícone Mais ações..

    Considere as estipulações indicadas para a palavra-passe, que são derivadas da política de palavras-passe definida para a instância.

  5. Introduza uma palavra-passe forte de que se consiga lembrar e clique em OK.

gcloud

Use o comando gcloud sql users set-password da seguinte forma para definir a palavra-passe do utilizador predefinido.

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 palavra-passe da conta de utilizador predefinida, use um pedido PUT com o método users:update.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • project-id: o ID do seu projeto
  • instance-id: o ID de instância pretendido
  • password: a palavra-passe do utilizador

Método HTTP e URL:

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

Corpo JSON do pedido:

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

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

{
  "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 palavra-passe da conta de utilizador predefinida, use um pedido PUT com o método users:update.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • project-id: o ID do seu projeto
  • instance-id: o ID de instância pretendido
  • password: a palavra-passe do utilizador

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 do pedido:

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

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

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

Crie um utilizador

Depois de configurar a conta de utilizador predefinida, pode criar outros utilizadores.

Consola

  1. Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.

    Aceda a Instâncias do Cloud SQL

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

    Na página Adicione uma conta de utilizador à instância instance_name, pode escolher se o utilizador se autentica com o método da base de dados incorporada (nome de utilizador e palavra-passe) ou como um utilizador do IAM.

  5. Selecione Autenticação integrada (a predefinição) e adicione as seguintes informações:
    • Um nome de utilizador.
    • Opcional. Uma palavra-passe. Indique uma palavra-passe forte de que se consiga lembrar.
    • Opcional. A política de palavras-passe do utilizador.
    • Na secção Nome do anfitrião, a predefinição é Permitir qualquer anfitrião, o que significa que o utilizador pode estabelecer ligação a partir de qualquer endereço IP. Opcionalmente, selecione Restringir anfitrião por endereço IP ou intervalo de endereços e introduza um endereço IP ou um intervalo de endereços na secção Anfitrião. O utilizador só pode estabelecer ligação a partir do endereço IP ou dos endereços especificados.
  6. Clique em Adicionar.

Os utilizadores criados em instâncias que usam o MySQL 8.0 ou posterior e o método de autenticação do Cloud SQL recebem automaticamente a função cloudsqlsuperuser e têm os seguintes privilégios associados a esta função: CREATEROLE, CREATEDB e LOGIN.

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

Para mais informações acerca destas contas de utilizador e privilégios, consulte Outras contas de utilizador do MySQL.

gcloud

Para criar um utilizador, use o comando gcloud sql users create.

Substitua o seguinte:

  • USER_NAME: o nome de utilizador.
  • HOST: o nome do anfitrião do utilizador como um endereço IP específico, um intervalo de endereços ou qualquer anfitrião (%).
  • INSTANCE_NAME: o nome da instância.
  • PASSWORD: a palavra-passe do utilizador.
gcloud sql users create USER_NAME \
--host=HOST \
--instance=INSTANCE_NAME \
--password=PASSWORD

Os utilizadores criados em instâncias que usam o MySQL 8.0 ou posterior e o método de autenticação do Cloud SQL recebem automaticamente a função cloudsqlsuperuser e têm os seguintes privilégios associados a esta função: CREATEROLE, CREATEDB e LOGIN.

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

Para mais informações acerca destas contas de utilizador e privilégios, consulte Outras contas de utilizador do MySQL.

Os limites de comprimento dos nomes de utilizador são os mesmos para o Cloud SQL e para o MySQL no local: 32 carateres para o MySQL 8.0 e posterior, e 16 carateres para as versões anteriores.

Quando cria um utilizador, pode adicionar parâmetros da política de palavras-passe do utilizador.

Terraform

Para criar um utilizador, 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 num Google Cloud projeto, conclua os passos nas secções seguintes.

Prepare o Cloud Shell

  1. Inicie o Cloud Shell.
  2. Defina o Google Cloud projeto predefinido onde quer aplicar as suas configurações do Terraform.

    Só tem de executar este comando uma vez por projeto e pode executá-lo em qualquer diretório.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    As variáveis de ambiente são substituídas se definir valores explícitos no ficheiro de configuração do Terraform.

Prepare o diretório

Cada ficheiro de configuração do Terraform tem de ter o seu próprio diretório (também denominado módulo raiz).

  1. No Cloud Shell, crie um diretório e um novo ficheiro nesse diretório. O nome do ficheiro tem de ter a extensão .tf, por exemplo, main.tf. Neste tutorial, o ficheiro é denominado main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Se estiver a seguir um tutorial, pode copiar o código de exemplo em cada secção ou passo.

    Copie o exemplo de código para o ficheiro main.tf criado recentemente.

    Opcionalmente, copie o código do GitHub. Isto é recomendado quando o fragmento do Terraform faz parte de uma solução completa.

  3. Reveja e modifique os parâmetros de exemplo para aplicar ao seu ambiente.
  4. Guarde as alterações.
  5. Inicialize o Terraform. Só tem de fazer isto uma vez por diretório.
    terraform init

    Opcionalmente, para usar a versão mais recente do fornecedor Google, inclua a opção -upgrade:

    terraform init -upgrade

Aplique as alterações

  1. Reveja a configuração e verifique se os recursos que o Terraform vai criar ou atualizar correspondem às suas expetativas:
    terraform plan

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

  2. Aplique a configuração do Terraform executando o seguinte comando e introduzindo yes no comando:
    terraform apply

    Aguarde até que o Terraform apresente a mensagem "Apply complete!" (Aplicação concluída!).

  3. Abra o seu Google Cloud projeto para ver os resultados. Na Google Cloud consola, navegue para os seus recursos na IU para se certificar de que o Terraform os criou ou atualizou.

Eliminar as alterações

Para eliminar as alterações, faça o seguinte:

  1. Para desativar a proteção contra eliminação, no ficheiro de configuração do Terraform, defina o argumento deletion_protection como false.
    deletion_protection =  "false"
  2. Aplique a configuração do Terraform atualizada executando o seguinte comando e introduzindo yes no comando:
    terraform apply
  1. Remova os recursos aplicados anteriormente com a sua configuração do Terraform executando o seguinte comando e introduzindo yes no comando:

    terraform destroy

REST v1

Para criar um utilizador, use um pedido POST com o método users:insert.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • project-id: o ID do seu projeto
  • instance-id: o ID de instância pretendido
  • user-id: O ID do utilizador
  • password: a palavra-passe do utilizador

Método HTTP e URL:

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

Corpo JSON do pedido:

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

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

{
  "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 utilizadores criados em instâncias que usam o MySQL 8.0 ou posterior e o método de autenticação do Cloud SQL recebem automaticamente a função cloudsqlsuperuser e têm os seguintes privilégios associados a esta função: CREATEROLE, CREATEDB e LOGIN.

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

Para mais informações acerca destas contas de utilizador e privilégios, consulte Outras contas de utilizador do MySQL.

Os limites de comprimento dos nomes de utilizador são os mesmos para o Cloud SQL e para o MySQL no local: 32 carateres para o MySQL 8.0 e posterior, e 16 carateres para as versões anteriores.

Quando cria um utilizador, pode adicionar parâmetros da política de palavras-passe do utilizador.

REST v1beta4

Para criar um utilizador, use um pedido POST com o método users:insert.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • project-id: o ID do seu projeto
  • instance-id: o ID de instância pretendido
  • user-id: O ID do utilizador
  • password: a palavra-passe do utilizador

Método HTTP e URL:

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

Corpo JSON do pedido:

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

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

{
  "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 utilizadores criados em instâncias que usam o MySQL 8.0 ou posterior e o método de autenticação do Cloud SQL recebem automaticamente a função cloudsqlsuperuser e têm os seguintes privilégios associados a esta função: CREATEROLE, CREATEDB e LOGIN.

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

Para mais informações acerca destas contas de utilizador e privilégios, consulte Outras contas de utilizador do MySQL.

Os limites de comprimento dos nomes de utilizador são os mesmos para o Cloud SQL e para o MySQL no local: 32 carateres para o MySQL 8.0 e posterior, e 16 carateres para as versões anteriores.

Quando cria um utilizador, pode adicionar parâmetros da política de palavras-passe do utilizador.

Cliente mysql

  1. Para criar um utilizador, na linha de comandos mysql, use a seguinte declaração CREATE USER:
      CREATE USER 'USER_NAME'@'%'
         IDENTIFIED BY 'PASSWORD';
      

    Opcionalmente, adicione os parâmetros da política de palavra-passe do utilizador.

  2. Pode confirmar a criação do utilizador apresentando a tabela de utilizadores:
    SELECT user, host FROM mysql.user;
    Para uma instância de segunda geração, o resultado tem um aspeto semelhante a este exemplo:
    +----------+-----------+
    | user     | host      |
    +----------+-----------+
    | root     | %         |
    | newuser  | %         |
    +----------+-----------+
    1 row in set (0.01 sec)
    
  3. Conceda privilégios ao utilizador com a declaração GRANT. Para mais informações, consulte o artigo Privilégios fornecidos pelo MySQL.
  4. Limpe a tabela mysql.user para garantir que a alteração persiste:
      FLUSH TABLES mysql.user;

Defina uma política de palavras-passe do utilizador

Pode definir uma política de palavras-passe com o tipo de autenticação incorporado.

Consola

  1. Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.

    Aceda a Instâncias do Cloud SQL

  2. Para abrir a página Vista geral de uma instância, clique no nome da instância.
  3. Selecione Utilizadores no menu de navegação do SQL.
  4. Clique em mais ações Ícone Mais ações. para o utilizador cuja política quer alterar.
  5. Selecione Editar política de palavras-passe.
  6. Na secção Política de palavras-passe, selecione uma ou mais das seguintes opções:
    • Definir expiração da palavra-passe: especifica o número de dias após os quais a palavra-passe expira e o utilizador tem de criar uma nova.
    • Bloquear após tentativas falhadas: especifica o número de vezes que um utilizador pode tentar a palavra-passe incorretamente antes de a conta ser bloqueada.

      Suportado apenas no Cloud SQL para MySQL 8.0 e versões posteriores.

    • Exigir palavra-passe atual quando a palavra-passe é alterada: exige que os utilizadores introduzam a palavra-passe existente quando tentam alterá-la.

gcloud

Para definir a política de palavras-passe do utilizador, use o comando gcloud sql users set-password-policy.

Use o elemento --password-policy-enable-password-verification para tornar obrigatório que os utilizadores introduzam a respetiva palavra-passe existente quando tentam alterar a palavra-passe. Para desativar este parâmetro, use --no-password-policy-enable-password-verification.

Substitua o seguinte:

  • USER_NAME: o nome de utilizador.
  • INSTANCE_NAME: o nome da instância.
  • HOST: o nome do anfitrião do utilizador como um endereço IP específico, um intervalo de endereços ou qualquer anfitrião (%).
  • PASSWORD_POLICY_ALLOWED_FAILED_ATTEMPTS: Opcional: o número de vezes que um utilizador pode tentar a palavra-passe 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 os quais a palavra-passe expira e o utilizador tem de criar uma nova.
gcloud sql users set-password-policy USER_NAME \
--instance=INSTANCE_NAME \
--host=HOST \
--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 remover uma política de palavras-passe de utilizador, use o parâmetro --clear-password-policy.

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

Para ver a política de palavras-passe do utilizador, consulte Listar utilizadores.

REST v1

Para definir uma política de palavras-passe de utilizador, use um pedido PUT com o método users:update.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o ID do seu projeto
  • INSTANCE_ID: o ID da instância
  • USER_ID: o ID do utilizador
  • PASSWORD: a palavra-passe do utilizador
  • FAILED_ATTEMPTS_CHECK: definido como true para ativar uma verificação do número de tentativas falhadas de início de sessão após as quais a conta é bloqueada
  • NUMBER_OF_ATTEMPTS: o número de tentativas falhadas de início de sessão após as quais a conta é bloqueada
  • PASSWORD_EXPIRATION_DURATION: o número de dias após os quais a palavra-passe expira e o utilizador tem de criar uma nova
  • VERIFY_PASSWORD: defina como true para tornar obrigatório que os utilizadores introduzam a respetiva palavra-passe existente quando tentam alterar a palavra-passe

Método HTTP e URL:

PUT https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users?name=USER_ID

Corpo JSON do pedido:

{
  "name": "USER_ID",
  "password": "PASSWORD",
  "data":
  {
    "passwordValidationUserPolicy" : {
      {
        "enableFailedAttemptsCheck" : "FAILED_ATTEMPTS_CHECK",
        "allowedFailedAttempts" : "NUMBER_OF_ATTEMPTS",
        "passwordExpirationDuration" : "PASSWORD_EXPIRATION_DURATION",
        "enablePasswordVerification" : "VERIFY_PASSWORD"
      }
    },
  }
}

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

Para ver a política de palavras-passe do utilizador, consulte Listar utilizadores.

REST v1beta4

Para definir uma política de palavras-passe de utilizador, use um pedido PUT com o método users:update.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o ID do seu projeto
  • INSTANCE_ID: o ID da instância
  • USER_ID: o ID do utilizador
  • PASSWORD: a palavra-passe do utilizador
  • FAILED_ATTEMPTS_CHECK: definido como true para ativar uma verificação do número de tentativas falhadas de início de sessão após as quais a conta é bloqueada
  • NUMBER_OF_ATTEMPTS: o número de tentativas falhadas de início de sessão após as quais a conta é bloqueada
  • PASSWORD_EXPIRATION_DURATION: o número de dias após os quais a palavra-passe expira e o utilizador tem de criar uma nova
  • VERIFY_PASSWORD: defina como true para tornar obrigatório que os utilizadores introduzam a respetiva palavra-passe existente quando tentam alterar a palavra-passe

Método HTTP e URL:

PUT https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users?name=USER_ID

Corpo JSON do pedido:

{
  "name": "USER_ID",
  "password": "PASSWORD",
  "data":
  {
    "passwordValidationUserPolicy" : {
      {
        "enableFailedAttemptsCheck" : "FAILED_ATTEMPTS_CHECK",
        "allowedFailedAttempts" : "NUMBER_OF_ATTEMPTS",
        "passwordExpirationDuration" : "PASSWORD_EXPIRATION_DURATION",
        "enablePasswordVerification" : "VERIFY_PASSWORD"
      }
    },
  }
}

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

Para ver a política de palavras-passe do utilizador, consulte Listar utilizadores.

Cliente mysql

Para definir uma política de palavras-passe do utilizador, no comando mysql, use a seguinte declaração ALTER USER:

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

Substitua o seguinte:

  • USER_NAME: o nome de utilizador.
  • ALLOWED_FAILED_ATTEMPTS: Opcional: o número de vezes que um utilizador pode tentar a palavra-passe incorretamente antes de a conta ser bloqueada.
  • PASSWORD_EXPIRATION_DURATION: Opcional: Especifica o número de dias após os quais a palavra-passe expira e o utilizador tem de criar uma nova.

Use a opção PASSWORD REQUIRE CURRENT para tornar obrigatório que os utilizadores introduzam a respetiva palavra-passe existente quando tentam alterar a palavra-passe.

Para ver a política de palavras-passe do utilizador, consulte o artigo Liste utilizadores.

Listar utilizadores

Consola

  1. Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.

    Aceda a Instâncias do Cloud SQL

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

    A lista mostra o User name, o Host name e o tipo Authentication de cada utilizador.

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

gcloud

Use o comando gcloud sql users list para listar os utilizadores desta instância:

gcloud sql users list \
--instance=INSTANCE_NAME

O comando devolve o Name, o Host e a autenticação Type para cada utilizador.

Além disso, para o tipo de autenticação incorporado, são devolvidas as definições e o estado da política de palavras-passe. Por 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 utilizadores definidos para uma instância, use um pedido GET com o método users:list.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • project-id: o ID do seu projeto
  • instance-id: o ID de instância pretendido

Método HTTP e URL:

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

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

{
  "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 tiver sido definida uma política de palavras-passe de utilizador, a secção items da resposta inclui uma secção passwordPolicy. O seguinte exemplo de código mostra a secção passwordPolicy.

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

REST v1beta4

Para listar os utilizadores definidos para uma instância, use um pedido GET com o método users:list.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • project-id: o ID do seu projeto
  • instance-id: o ID de instância pretendido

Método HTTP e URL:

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

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

{
  "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 tiver sido definida uma política de palavras-passe de utilizador, a secção items da resposta inclui uma secção passwordPolicy. O seguinte exemplo de código mostra a secção passwordPolicy.

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

Cliente mysql

Para listar os utilizadores do MySQL, na linha de comandos mysql, use a seguinte declaração SELECT:

SELECT user, host FROM mysql.user;

Para uma instância de segunda geração com apenas a root conta de utilizador configurada, o resultado é semelhante ao deste exemplo:

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

Este exemplo mostra os utilizadores de uma instância com o utilizador root. Este utilizador pode estabelecer ligação a partir de qualquer anfitrião (%). O campo da palavra-passe mostra o hash da palavra-passe.

Altere a palavra-passe de um utilizador

As palavras-passe dos utilizadores podem ser alteradas de uma das seguintes formas.

Consola

  1. Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.

    Aceda a Instâncias do Cloud SQL

  2. Para abrir a página Vista geral de uma instância, clique no nome da instância.
  3. Selecione Utilizadores no menu de navegação do SQL.
  4. Clique em mais ações Ícone Mais ações. para o utilizador que quer atualizar.
  5. Selecione Alterar palavra-passe.
  6. Especifique uma nova palavra-passe.

    Além disso, se quiser continuar a usar a palavra-passe antiga, selecione a caixa de verificação Manter palavra-passe atual.

  7. Clique em OK.

gcloud

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

Substitua o seguinte:

  • USER_NAME: o nome de utilizador.
  • HOST: o nome do anfitrião do utilizador como um endereço IP específico, um intervalo de endereços ou qualquer anfitrião (%).
  • INSTANCE_NAME: o nome da instância.
  • PASSWORD: Uma palavra-passe. Tem de cumprir os requisitos das políticas de palavras-passe, se estiverem definidas.

Opcionalmente, para o MySQL 8.0 e posterior, pode continuar a permitir que o utilizador use a palavra-passe mais antiga com a opção --retain-password. Para rejeitar a palavra-passe 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 a palavra-passe de um utilizador, use um pedido PUT com o método users:update.

O pedido seguinte atualiza a palavra-passe da conta de utilizador user_name'@'%. Se o seu utilizador tiver um anfitrião diferente, tem de modificar a chamada com o anfitrião correto.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • project-id: o ID do seu projeto
  • instance-id: o ID de instância pretendido
  • user-id: O ID do utilizador
  • password: a nova palavra-passe do utilizador
  • dual-password: um destes valores de enumeração:
    • DUAL_PASSWORD: o utilizador pode continuar a usar a palavra-passe antiga.
    • NO_DUAL_PASSWORD: o utilizador não pode usar a palavra-passe antiga.
    • NO_MODIFY_DUAL_PASSWORD: o estado da palavra-passe 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 do pedido:

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

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

{
  "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 a palavra-passe de um utilizador, use um pedido PUT com o método users:update.

O pedido seguinte atualiza a palavra-passe da conta de utilizador user_name'@'%. Se o seu utilizador tiver um anfitrião diferente, tem de modificar a chamada com o anfitrião correto.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • project-id: o ID do seu projeto
  • instance-id: o ID de instância pretendido
  • user-id: O ID do utilizador
  • password: a nova palavra-passe do utilizador
  • dual-password: um destes valores de enumeração:
    • DUAL_PASSWORD: o utilizador pode continuar a usar a palavra-passe antiga.
    • NO_DUAL_PASSWORD: o utilizador não pode usar a palavra-passe antiga.
    • NO_MODIFY_DUAL_PASSWORD: o estado da palavra-passe 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 do pedido:

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

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

{
  "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 palavra-passe, na linha de comandos mysql, use a seguinte declaração SET PASSWORD:
    SET PASSWORD FOR USER_NAME = PASSWORD('auth_string');
  2. Limpe a tabela mysql.user para garantir que a alteração persiste:
    FLUSH TABLES mysql.user;

Se um utilizador estiver bloqueado devido às definições da política de palavras-passe, altere a palavra-passe para o desbloquear. Certifique-se de que as palavras-passe, quando alteradas, cumprem a política de palavras-passe.

Remova uma política de palavras-passe de utilizadores

Pode remover uma política de palavras-passe de um utilizador que tenha o tipo de autenticação incorporado.

gcloud

Para remover a política de palavras-passe do utilizador, use o comando gcloud sql users set-password-policy e o parâmetro --clear-password-policy.

Substitua o seguinte:

  • USER_NAME: o nome de utilizador
  • INSTANCE_NAME: o nome da instância
  • HOST: o nome do anfitrião do utilizador como um endereço IP específico, um intervalo de endereços ou qualquer anfitrião (%)
gcloud sql users set-password-policy USER_NAME \
--instance=INSTANCE_NAME \
--host=HOST \
--clear-password-policy

REST v1

Para remover uma política de palavra-passe de utilizador, use um pedido PUT com o método users:update.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o ID do seu projeto
  • INSTANCE_ID: o ID da instância
  • USER_ID: o ID do utilizador
  • PASSWORD: a palavra-passe do utilizador

Método HTTP e URL:

PUT https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users?name=USER_ID

Corpo JSON do pedido:

{
  "name": "USER_ID",
  "password": "PASSWORD",
  "data":
  {
    "passwordValidationUserPolicy" : {}
  }
}

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

REST v1beta4

Para remover uma política de palavra-passe de utilizador, use um pedido PUT com o método users:update.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o ID do seu projeto
  • INSTANCE_ID: o ID da instância
  • USER_ID: o ID do utilizador
  • PASSWORD: a palavra-passe do utilizador

Método HTTP e URL:

PUT https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users?name=USER_ID

Corpo JSON do pedido:

{
  "name": "USER_ID",
  "password": "PASSWORD",
  "data":
  {
    "passwordValidationUserPolicy" : {}
  }
}

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

Remova um utilizador

O utilizador predefinido pode remover utilizadores.

Antes de remover um utilizador, tem de eliminar todos os objetos que lhe pertencem ou reatribuir a respetiva propriedade, e revogar todos os privilégios que a função lhe tenha concedido noutros objetos.

Consola

  1. Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.

    Aceda a Instâncias do Cloud SQL

  2. Para abrir a página Vista geral de uma instância, clique no nome da instância.
  3. Selecione Utilizadores no menu de navegação do SQL.
  4. Clique em mais ações Ícone Mais ações. junto ao utilizador que quer remover.
  5. Selecione Remover e, de seguida, selecione novamente Remover.

gcloud

Use o comando gcloud sql users delete para remover um utilizador.

Substitua o seguinte:

  • USER_NAME: o nome de utilizador.
  • HOST: o nome do anfitrião do utilizador como um endereço IP específico, um intervalo de endereços ou qualquer anfitrião (%).
  • INSTANCE_NAME: o nome da instância.
gcloud sql users delete USER_NAME \
--host=HOST \
--instance=INSTANCE_NAME

REST v1

O pedido abaixo usa o método users:delete para eliminar a conta de utilizador especificada.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o ID do seu projeto
  • INSTANCE_ID: o ID de instância pretendido
  • USERNAME: o endereço de email do utilizador 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 o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

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

O pedido abaixo usa o método users:delete para eliminar a conta de utilizador especificada.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o ID do seu projeto
  • INSTANCE_ID: o ID de instância pretendido
  • USERNAME: o endereço de email do utilizador 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 o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

{
  "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 eliminar um utilizador, na linha de comandos mysql, use a seguinte declaração DROP USER:
    DROP USER 'USER_NAME'@'HOST_NAME';
  2. Limpe a tabela mysql.user para garantir que a alteração persiste:
    FLUSH TABLES mysql.user;

Atualize propriedades do utilizador

Para atualizar propriedades do utilizador, como o anfitrião ou os privilégios, tem de usar o mysql cliente. Para mais informações, consulte o artigo Gestão de contas de utilizador do MySQL na documentação do MySQL.

O que se segue?