Sobre os usuários do MySQL

Nesta página, saiba como o Cloud SQL funciona com os usuários do MySQL. As contas de usuário do MySQL fornecem segurança ao controlar o acesso aos bancos de dados do MySQL.

Para ver a documentação completa sobre usuários do MySQL, veja a documentação do MySQL. Para informações sobre como criar e gerenciar usuários do Cloud SQL, consulte Criar e gerenciar usuários.

Por que contas de usuário do MySQL são necessárias

As contas de usuário do MySQL permitem que você faça o login e administre sua instância do Cloud SQL. As contas de usuário também são necessárias para que os aplicativos acessem sua instância.

Restrições de superusuário

No Cloud SQL, os clientes não podem criar ou acessar usuários com atributos de superusuário.

Como o Cloud SQL para MySQL é um serviço gerenciado, ele restringe o acesso a determinados procedimentos e tabelas do sistema.

Os privilégios da linguagem de manipulação de dados (DML, na sigla em inglês) e da linguagem de definição de dados (DDL) são restritos em algumas tabelas de esquema.

Confira a lista de tabelas do sistema MySQL 5.6 no esquema mysql que exigem permissões de gravação: audit_log_rules_expanded, audit_log_supported_ops, audit_log_rules, cloudsql_replica_index, db, event, func, heartbeat, plugin, proc, user e tables_priv.

Para MySQL 5.7, veja a lista: audit_log_rules_expanded, audit_log_supported_ops, audit_log_rules, cloudsql_replica_index, db, event, func, gtid_executed, heartbeat, plugin, proc, user e tables_priv.

Para informações relacionadas ao MySQL 8.0, consulte Privilégios de usuário do MySQL 8.0 (cloudsqlsuperuser).

Formato da conta de usuário do MySQL

As contas de usuário do MySQL têm dois componentes: um nome de usuário e um nome de host. O nome do usuário identifica o usuário e o nome do host especifica os hosts a partir dos quais o usuário pode se conectar. O nome do usuário e o nome do host são combinados para criar uma conta de usuário:

'<user_name>'@'<host_name>'

É possível especificar um endereço IP específico ou intervalo de endereços para o nome do host, ou usar o caractere de porcentagem (%) para deixar o nome do host sem restrições. Observe que se você se conectar à sua instância usando endereços IP, será preciso adicionar o endereço IP do cliente como um Endereço autorizado mesmo que o nome do host do usuário seja irrestrito.

As contas de usuário são definidas pelo nome do usuário e o nome do host. Por exemplo, 'user'@'%' é uma conta de usuário diferente de 'user'@'localhost'.

Usuário padrão do MySQL

Após a criação, as instâncias do MySQL têm uma conta de usuário padrão: 'root'@'%'. Use essa conta para se conectar e gerenciar a instância do banco de dados pela primeira vez. O usuário padrão tem todos os privilégios do banco de dados, exceto SUPER e FILE. No Cloud SQL, não é possível renomear 'root'@'%'.

O padrão para root'@'% é nenhuma senha, e o MySQL não exige o uso de senha para root'@'%. No entanto, como root'@'% existe na maioria das instalações do MySQL, o usuário root'@'% é um destino comum para acessos não autorizados. Qualquer pessoa ou programa com acesso à sua instância tem acesso e controle quase ilimitados sobre a instância e os dados. Por esse motivo, recomendamos que você configure seu usuário root'@'% com uma senha forte ou o exclua. Para receber ajuda com a configuração da conta de usuário padrão, consulte Configurar a conta de usuário padrão.

Usuários do sistema

Existem sete usuários do sistema:

  • root@localhost, root@127.0.0.1, root@::1

    Usado para fornecer o serviço de banco de dados gerenciado.

  • cloudsqlreplica@%

    Usado como um usuário de replicação para réplicas.

  • cloudsqlimport@localhost

    Usado para importações de dados.

  • cloudsqlexport@localhost

    Usado para exportações de dados.

  • cloudsqloneshot

    Usado em outras operações de banco de dados.

  • cloudsqlapplier@localhost

    Usado para operações de replicação na réplica do servidor externo ou replicação de versão principal.

  • cloudsqlobservabilityadmin

    Usado para observabilidade do banco de dados.

Esses usuários não podem ser excluídos nem modificados.

Outras contas de usuário do MySQL

Você também pode criar outras contas de usuário do MySQL. Esta é uma boa prática, porque permite usar contas de usuário do MySQL diferentes para diferentes propósitos.

Crie uma conta de usuário com um nome de host restrito ou use comandos SQL para limitar privilégios em suas contas de usuário.

Para mais informações sobre nomes de contas de usuário, consulte a documentação do MySQL. Saiba como criar um novo usuário do MySQL em Criar um usuário.

Privilégios de usuário do MySQL 5.6 e 5.7

O MySQL fornece privilégios específicos. Conceda ou negue esses privilégios a um usuário. Isso permite que você controle o que um usuário pode fazer na sua instância.

Os usuários criados com o Cloud SQL têm os mesmos privilégios que o usuário padrão do MySQL. É possível alterar seus privilégios usando as instruções GRANT ou REVOKE.

Ao usar o cliente mysql para criar um usuário, é necessário conceder a ele privilégios explicitamente com a instrução GRANT.

Para mais informações sobre os privilégios compatíveis com o MySQL, acesse esta página (em inglês).

Privilégios de usuário do MySQL 8.0 (cloudsqlsuperuser)

No MySQL 8.0 para o Cloud SQL, ao criar um novo usuário, ele recebe automaticamente o papel cloudsqlsuperuser. O papel cloudsqlsuperuser é um papel do Cloud SQL que contém vários privilégios do MySQL. Esse papel concede ao usuário todos os privilégios estáticos do MySQL, exceto SUPER e FILE.

O papel cloudsqlsuperuser é compatível apenas com os seguintes privilégios dinâmicos baseados em versões secundárias do MySQL 8.0:

MySQL 8.0.18

MySQL 8.0.26

MySQL 8.0.27

MySQL 8.0.28

MySQL 8.0.29 (descontinuado)

MySQL 8.0.30 e posterior

O papel cloudsqlsuperuser não é compatível com operações de Linguagem de definição de dados (DDL, na sigla em inglês) no banco de dados do sistema mysql.

Para ver uma lista completa de privilégios concedidos ao papel cloudsqlsuperuser, execute a instrução SHOW GRANTS no cliente mysql:

SHOW GRANTS FOR 'cloudsqlsuperuser'

A seguir