Esta página descreve como o Cloud SQL funciona com utilizadores do MySQL. As contas de utilizador do MySQL oferecem segurança através do controlo do acesso às bases de dados do MySQL.
Para ver a documentação completa acerca dos utilizadores no MySQL, consulte o artigo Controlo de acesso e gestão de contas na documentação do MySQL. Para obter informações sobre a criação e a gestão de utilizadores do Cloud SQL no Cloud SQL, consulte o artigo Crie e faça a gestão de utilizadores.
Por que motivo precisa de contas de utilizador do MySQL
As contas de utilizador do MySQL permitem-lhe iniciar sessão e administrar a sua instância do Cloud SQL. As contas de utilizador também são necessárias para que as aplicações acedam à sua instância.
Restrições de superutilizador
No Cloud SQL, os clientes não podem criar nem aceder a utilizadores com atributos de superutilizador.
Uma vez que o Cloud SQL para MySQL é um serviço gerido, restringe o acesso a determinadas tabelas e procedimentos do sistema.
Os privilégios da linguagem de manipulação de dados (DML) e da linguagem de definição de dados (LDD) estão restritos em algumas tabelas de esquemas.
Segue-se a lista de tabelas do sistema MySQL 5.6 no esquema mysql que requerem autorizações de escrita:
audit_log_rules_expanded
audit_log_supported_ops
audit_log_rules
cloudsql_replica_index
db
event
func
heartbeat
plugin
proc
user
tables_priv
Para o MySQL 5.7, segue-se 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
tables_priv
Para informações relacionadas sobre o MySQL 8.0 e o MySQL 8.4, consulte os artigos Privilégios de utilizador do MySQL 8.0 (cloudsqlsuperuser) e Privilégios de utilizador do MySQL 8.4 (cloudsqlsuperuser).
Formato da conta de utilizador do MySQL
As contas de utilizador do MySQL têm dois componentes: um nome de utilizador e um nome de anfitrião. O nome de utilizador identifica o utilizador e o nome do anfitrião especifica a partir de que anfitriões o utilizador se pode ligar. O nome de utilizador e o nome de anfitrião são combinados para criar uma conta de utilizador:
'<user_name>'@'<host_name>'
Pode especificar um endereço IP ou um intervalo de endereços específico para o nome do anfitrião ou usar o caráter de percentagem ("%") para deixar o nome do anfitrião sem restrições. Tenha em atenção que, se se ligar à sua instância através de endereços IP, tem de adicionar o endereço IP do cliente como um endereço autorizado, mesmo que o nome do anfitrião do utilizador não tenha restrições.
As contas de utilizador são definidas pelo nome de utilizador e pelo nome de anfitrião. Por exemplo, 'user'@'%'
é uma conta de utilizador diferente de 'user'@'localhost'
.
Utilizador predefinido do MySQL
Após a criação, as instâncias do MySQL têm uma conta de utilizador predefinida:
'root'@'%'
. Use esta conta para se ligar e gerir a instância da base de dados pela primeira vez. O utilizador predefinido tem todos os privilégios da base de dados, exceto SUPER e FILE. No Cloud SQL, não pode mudar o nome de 'root'@'%'
.
A predefinição para root'@'%
é não ter palavra-passe, e o MySQL não exige que use uma palavra-passe para root'@'%
. No entanto, uma vez que root'@'%
existe na maioria das instalações do MySQL, o utilizador root'@'%
é um alvo comum para acesso não autorizado.
Qualquer pessoa ou programa que obtenha acesso à sua instância tem acesso quase ilimitado e controlo sobre a sua instância e dados. Por este motivo, recomendamos que configure o seu utilizador root'@'%
com uma palavra-passe forte ou elimine este utilizador. Para obter ajuda na configuração da conta de utilizador predefinida, consulte o artigo
Configure a conta de utilizador predefinida.
Utilizadores do sistema
O Cloud SQL suporta os seguintes utilizadores do sistema:
root@localhost
,root@127.0.0.1
,root@::1
Usado para fornecer o serviço de base de dados gerido.
cloudsqlreplica@%
Usado como utilizador 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 para outras operações de base de dados.
cloudsqlapplier@localhost
Usado para operações de replicação na réplica do servidor externo ou na replicação entre versões principais.
cloudsqlobservabilityadmin
Usado para a observabilidade da base de dados.
cloudiamgroup@'%'
Usado para a autenticação de grupos do IAM.
cloudsqlreadonly
Usado para executar operações só de leitura em tabelas do sistema.
Não pode eliminar nem modificar estes utilizadores.
Outras contas de utilizador do MySQL
Também pode criar outras contas de utilizador do MySQL. Esta é uma boa prática porque permite-lhe usar contas de utilizador do MySQL diferentes para fins diferentes.
Pode criar uma conta de utilizador com um nome de anfitrião restrito ou usar comandos SQL para limitar os privilégios nas suas contas de utilizador.
Para mais informações sobre os nomes das contas de utilizador, consulte o artigo Especificar nomes de contas na documentação do MySQL. Para criar um novo utilizador do MySQL no Cloud SQL, consulte o artigo Criar um utilizador.
Privilégios de utilizador do MySQL 5.6 e 5.7
O MySQL oferece privilégios detalhados que pode conceder ou remover para um utilizador. Isto permite-lhe controlar o que um utilizador pode fazer na sua instância.
Os utilizadores criados através do Cloud SQL têm os mesmos privilégios que o utilizador MySQL predefinido. Pode alterar os respetivos privilégios através das declarações
GRANT
ou
REVOKE
.
Quando usa o cliente mysql
para criar um utilizador, tem de conceder explicitamente privilégios a esse utilizador com a declaração GRANT
.
Para mais informações acerca dos privilégios suportados pelo MySQL, consulte o artigo Privilégios fornecidos pelo MySQL.
Privilégios do utilizador do MySQL 8.0 (cloudsqlsuperuser
)
No Cloud SQL para MySQL 8.0, quando cria um novo utilizador, é-lhe concedida automaticamente a função cloudsqlsuperuser
. A função cloudsqlsuperuser
é uma função do Cloud SQL que contém vários privilégios do MySQL. Esta função
concede ao utilizador todos os privilégios estáticos do MySQL, exceto SUPER
e FILE
.
A função cloudsqlsuperuser
só suporta os seguintes privilégios dinâmicos com base nas 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 posteriores
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
A função cloudsqlsuperuser
não suporta operações de linguagem de definição de dados (LDD) na base de dados do sistema mysql
.
Para ver uma lista completa dos privilégios concedidos à função cloudsqlsuperuser
, execute a declaração SHOW GRANTS
no cliente mysql
:
SHOW GRANTS FOR 'cloudsqlsuperuser'
Privilégios do utilizador do MySQL 8.4 (cloudsqlsuperuser
)
Tal como no Cloud SQL para MySQL 8.0, no Cloud SQL para MySQL 8.4,
quando cria um novo utilizador, é-lhe
automaticamente concedida a função cloudsqlsuperuser
.
No MySQL 8.4, a função cloudsqlsuperuser
tem os mesmos privilégios que o MySQL 8.0.x.
No entanto, o MySQL 8.4 tem as seguintes principais diferenças em relação ao MySQL 8.0.x:
- Remove o privilégio
SET_USER_ID
e substitui-o pelos privilégiosALLOW_NONEXISTENT_DEFINER
eSET_ANY_DEFINER
introduzidos recentemente. - Concede
FLUSH_PRIVILEGES
como um subconjunto do privilégioRELOAD
. Esta concessão não substitui o privilégioRELOAD
e o privilégioRELOAD
continua a ser 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
nem TELEMETRY_LOG_ADMIN
introduzidos no MySQL 8.4.
O que se segue?
- Configure a
root
conta de utilizador para a sua instância. - Crie e faça a gestão de utilizadores.
- Crie e faça a gestão de bases de dados.
- Consulte a documentação do MySQL sobre utilizadores do MySQL.
- Consulte a documentação do MySQL acerca dos privilégios fornecidos pelo MySQL.
- Saiba mais sobre as opções de ligação à sua instância.