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 mais informações, consulte Como 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.

    Acessar 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

A solicitação a seguir usa o método users:update para atualizar a conta de usuário raiz ('root'@'%').

gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json' \
     --data '{"name": "root", "password": "[PASSWORD]"}' \
     -X PUT \
     'https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[INSTANCE_NAME]/users?name=root&host=%25'

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.

    Acessar 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 Criar conta de usuário.
  5. Na caixa de diálogo Criar conta de usuário, especifique:
    • um Nome de usuário;
    • uma Senha;
    • opcionalmente, um host.

      O padrã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

A solicitação a seguir usa o método users:insert para criar uma conta de usuário 'user_name'@'%'.

gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json' \
     --data '{"host": "%", "name": "[USER_NAME]", "password": "[PASSWORD]"}' \
     -X POST \
     https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[INSTANCE_NAME]/users

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.

    Acessar 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

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, modifique a chamada com o host correto.

gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json' \
     --data '{"name": "[USER_NAME]", "host": "%", "password": "[PASSWORD]"}' \
     -X PUT \
     'https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[INSTANCE_NAME]/users?name=[USER_NAME]&host=%25'

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;
    

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

    Acessar 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

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

gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     -X GET \
     https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[INSTANCE_NAME]/users

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.

    Acessar 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

Excluir o usuário:

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

REST

A solicitação a seguir usa o método users:delete para excluir a conta de usuário 'user_name'@'%'.

gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json' \
     --data '{"name": "[USER_NAME]", "host": "%"}' \
     -X DELETE \
     'https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[INSTANCE_NAME]/users?host=%25&name=[USER_NAME]'

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