Como criar e gerenciar usuários do MySQL

Nesta página, mostramos como realizar as ações a seguir em instâncias do Cloud SQL:

  • Configurar a conta de usuário padrão.
  • Criar, excluir e atualizar outras contas de usuário.

Para mais informações sobre como os usuários trabalham com o Cloud SQL, consulte Usuários do MySQL.

Antes de começar

Antes de concluir as tarefas abaixo, crie uma instância do Cloud SQL. Para saber mais, consulte o artigo Criar instâncias.

Se você planeja usar o cliente administrativo de seu banco de dados para gerenciar usuários, é preciso ter configurado o usuário padrão na instância. Para mais informações, consulte Como configurar a conta padrão.

Além disso, você precisa ter configurado um cliente administrativo conectado à sua instância. Para mais informações, consulte Opções de conexão para aplicativos externos.

Configurar a conta de usuário padrão

Ao criar uma nova instância do Cloud SQL, você precisa configurar a conta de usuário padrão para poder se conectar à instância.

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

Para configurar o usuário padrão:

Console

  1. Acesse a página "Instâncias" do Cloud SQL no Console do Google Cloud.

    Acesse a página "Instâncias" do Cloud SQL

  2. Clique na instância para abrir a respectiva página "Visão geral".
  3. Selecione Usuários no menu de navegação.
  4. Localize o usuário root com o valor de host % (any host) e selecione Alterar senha no menu "Mais ações" Ícone de mais ações..
  5. Forneça uma senha forte que você consiga lembrar posteriormente e clique em OK.

gcloud

Defina a senha do usuário padrão:

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

REST v1beta4

A solicitação a seguir usa o método users:update para atualizar a conta de usuário raiz.

('root'@'%').

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

Método HTTP e URL:

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

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://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "DONE",
  "user": "user@example.com",
  "insertTime": "2020-02-07T22:38:41.217Z",
  "startTime": "2020-02-07T22:38:41.217Z",
  "endTime": "2020-02-07T22:38:44.801Z",
  "operationType": "UPDATE_USER",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://www.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

Criar um usuário

Para criar um usuário:

Console

  1. Acesse a página "Instâncias" do Cloud SQL no Console do Google Cloud.

    Acesse a página "Instâncias" do Cloud SQL

  2. Selecione a instância para abrir a página "Visão geral" correspondente.
  3. Selecione Usuários no menu de navegação.
  4. Clique em ADICIONAR USUÁRIO.
  5. Na página Adicionar uma conta de usuário à instância instance_name, adicione as seguintes informações:
    • Um Nome de usuário.
    • uma Senha
    • Opcionalmente, um Host

      O padrão é "%", o que significa que a lista de hosts não é restrita. Também é possível fornecer um endereço IP ou intervalo de endereços IP, o que significa que apenas os usuários que se conectarem a partir desses endereços poderão acessar o banco de dados.

  6. Clique em Criar.

Os usuários criados com o Cloud SQL têm os privilégios associados ao papel cloudsqlsuperuser: CREATEROLE, CREATEDB e LOGIN. Um usuário criado por esses usuários pode ter privilégios de conexão ao banco de dados, o que pode impedir que ele seja excluído.

Os usuários criados com o Cloud SQL têm todos os privilégios, exceto FILE e SUPER. Se você precisar alterar os privilégios de um usuário, use o comando GRANT ou REVOKE no cliente mysql.

gcloud

Crie o usuário:

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

Os usuários criados com o Cloud SQL têm os privilégios associados ao papel cloudsqlsuperuser: CREATEROLE, CREATEDB e LOGIN. Um usuário criado por esses usuários pode ter privilégios de conexão ao banco de dados, o que pode impedir que ele seja excluído.

Os usuários criados com o Cloud SQL têm todos os privilégios, exceto FILE e SUPER. Se você precisar alterar os privilégios de um usuário, use o comando GRANT ou REVOKE no cliente mysql.

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

A solicitação abaixo usa o método users:insert para criar uma conta de usuário "user_name".

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

Método HTTP e URL:

POST https://www.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://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "DONE",
  "user": "user@example.com",
  "insertTime": "2020-02-07T22:44:16.656Z",
  "startTime": "2020-02-07T22:44:16.686Z",
  "endTime": "2020-02-07T22:44:20.437Z",
  "operationType": "CREATE_USER",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://www.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

Os usuários criados com o Cloud SQL têm os privilégios associados ao papel cloudsqlsuperuser: CREATEROLE, CREATEDB e LOGIN. Um usuário criado por esses usuários pode ter privilégios de conexão ao banco de dados, o que pode impedir que ele seja excluído.

Os usuários criados com o Cloud SQL têm todos os privilégios, exceto FILE e SUPER. Se você precisar alterar os privilégios de um usuário, use o comando GRANT ou REVOKE no cliente mysql.

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. No prompt mysql, crie o usuário:
      CREATE USER '[USER_NAME]'@'%'
         IDENTIFIED BY '[PASSWORD]';
      
  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;
    

Alterar uma senha de usuário

Para alterar uma senha de usuário:

Console

  1. Acesse a página "Instâncias" do Cloud SQL no Console do Google Cloud.

    Acesse a página "Instâncias" do Cloud SQL

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

gcloud

Atualize a senha:

gcloud sql users set-password [USER_NAME] \
   --host=[HOST] --instance=[INSTANCE_NAME] --prompt-for-password

REST v1beta4

A solicitação a seguir usa o método users:update para atualizar a senha da conta de usuário user_name'@'%'. Se seu usuário tiver um host diferente, você deverá 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

Método HTTP e URL:

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

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://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "DONE",
  "user": "user@example.com",
  "insertTime": "2020-02-07T22:38:41.217Z",
  "startTime": "2020-02-07T22:38:41.217Z",
  "endTime": "2020-02-07T22:38:44.801Z",
  "operationType": "UPDATE_USER",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://www.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

Cliente MySQL

  1. No prompt mysql, altere a senha:
    SET PASSWORD FOR [USER] = PASSWORD('auth_string');
    
  2. Limpe a tabela mysql.user para garantir que a alteração persista:
    FLUSH TABLES mysql.user;
    

Atualizar usuários

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.

Listar usuários

Para listar usuários:

Console

  1. Acesse a página "Instâncias" do Cloud SQL no Console do Google Cloud.

    Acesse a página "Instâncias" do Cloud SQL

  2. Selecione a instância para abrir a página "Visão geral" correspondente.
  3. Selecione Usuários no menu de navegação.

gcloud

Liste os usuários desta instância:

gcloud sql users list --instance=[INSTANCE_NAME]

Para ver uma lista completa de parâmetros desse comando, consulte a página de referência de gcloud sql users list.

REST v1beta4

A solicitação abaixo usa o método users:list para listar os usuários definidos para uma instância.

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

Cliente MySQL

No prompt mysql, liste os usuários do MySQL:

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.

Excluir usuários

Para excluir um usuário:

Antes de excluir 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. Acesse a página "Instâncias" do Cloud SQL no Console do Google Cloud.

    Acesse a página "Instâncias" do Cloud SQL

  2. Selecione a instância para abrir a página "Visão geral" correspondente.
  3. Selecione Usuários no menu de navegação.
  4. Selecione o usuário a ser excluído e clique em "Mais ações" Ícone mais ações..
  5. Selecione Excluir e clique em OK.

gcloud

Exclua o usuário:

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

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
  • user-id: o ID do usuário

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

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

Você receberá uma resposta JSON semelhante a esta:

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

Cliente MySQL

  1. No prompt mysql, exclua o usuário:
    DROP USER '[USER_NAME]'@'[HOST_NAME]';
    

    Para mais informações sobre a instrução DROP USER, consulte a documentação do MySQL (em inglês).

  2. Limpe a tabela mysql.user para garantir que a alteração persista:
    FLUSH TABLES mysql.user;
    

A seguir