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 conferir a documentação completa sobre usuários no MySQL, consulte Controle de acesso e gerenciamento de contas na 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 e ao MySQL 8.4, consulte Privilégios de usuário do MySQL 8.0 (cloudsqlsuperuser) e Privilégios de usuário do MySQL 8.4 (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 que 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
,cloudsqlimport@127.0.0.1
Usado para importações de dados.
cloudsqlexport@localhost
,cloudsqlexport@127.0.0.1
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.
cloudiamgroup@'%'
Usado para a autenticação de grupo do IAM.
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 Como especificar nomes de contas na documentação do MySQL. Para criar um novo usuário do MySQL no Cloud SQL, consulte 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 Cloud SQL para MySQL 8.0, 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
APPLICATION_PASSWORD_ADMIN
CONNECTION_ADMIN
ROLE_ADMIN
SET_USER_ID
XA_RECOVER_ADMIN
CLOUDSQL_SPECIAL_VARIABLES_ADMIN
FLUSH_OPTIMIZER_COSTS
FLUSH_STATUS
FLUSH_TABLES
FLUSH_USER_RESOURCES
INNODB_REDO_LOG_ENABLE
SHOW_ROUTINE
AUTHENTICATION_POLICY_ADMIN
GROUP_REPLICATION_STREAM
PASSWORDLESS_USER_ADMIN
AUDIT_ABORT_EXEMPT
MySQL 8.0.29 (descontinuado)
APPLICATION_PASSWORD_ADMIN
CONNECTION_ADMIN
ROLE_ADMIN
SET_USER_ID
XA_RECOVER_ADMIN
CLOUDSQL_SPECIAL_VARIABLES_ADMIN
FLUSH_OPTIMIZER_COSTS
FLUSH_STATUS
FLUSH_TABLES
FLUSH_USER_RESOURCES
INNODB_REDO_LOG_ENABLE
SHOW_ROUTINE
AUTHENTICATION_POLICY_ADMIN
GROUP_REPLICATION_STREAM
PASSWORDLESS_USER_ADMIN
AUDIT_ABORT_EXEMPT
SENSITIVE_VARIABLES_OBSERVER
MySQL 8.0.30 e posterior
APPLICATION_PASSWORD_ADMIN
CONNECTION_ADMIN
ROLE_ADMIN
SET_USER_ID
XA_RECOVER_ADMIN
CLOUDSQL_SPECIAL_VARIABLES_ADMIN
FLUSH_OPTIMIZER_COSTS
FLUSH_STATUS
FLUSH_TABLES
FLUSH_USER_RESOURCES
INNODB_REDO_LOG_ENABLE
SHOW_ROUTINE
AUTHENTICATION_POLICY_ADMIN
GROUP_REPLICATION_STREAM
PASSWORDLESS_USER_ADMIN
AUDIT_ABORT_EXEMPT
SENSITIVE_VARIABLES_OBSERVER
FIREWALL_EXEMPT
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'
Privilégios de usuário do MySQL 8.4 (cloudsqlsuperuser
)
Assim como no Cloud SQL para MySQL 8.0, no Cloud SQL para MySQL 8.4,
ao criar um novo usuário, ele
recebe automaticamente o papel cloudsqlsuperuser
.
No MySQL 8.4, o papel cloudsqlsuperuser
tem os mesmos privilégios do MySQL 8.0.x.
No entanto, o MySQL 8.4 tem as seguintes diferenças principais em relação ao MySQL 8.0.x:
- Remove o privilégio
SET_USER_ID
e o substitui pelos recém-introduzidosALLOW_NONEXISTENT_DEFINER
eSET_ANY_DEFINER
. - Concede
FLUSH_PRIVILEGES
como um subconjunto do privilégioRELOAD
. Essa concessão não substitui o privilégioRELOAD
, e o privilégioRELOAD
ainda é concedido para compatibilidade com versões anteriores. - Concede o novo privilégio
OPTIMIZE_LOCAL_TABLE
.
Além disso, o Cloud SQL para MySQL 8.4 não concede os privilégios
TRANSACTION_GTID_TAG
ou TELEMETRY_LOG_ADMIN
introduzidos no MySQL 8.4.
A seguir
- Configure a conta de usuário
root
da sua instância. - Crie e gerencie usuários.
- Criar e gerenciar bancos de dados.
- Consulte a documentação do MySQL sobre usuários do MySQL.
- Consulte a documentação do MySQL sobre privilégios fornecidos pelo MySQL.
- Saiba mais sobre as opções para se conectar à instância.