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_expandedaudit_log_supported_opsaudit_log_rulescloudsql_replica_indexdbeventfuncheartbeatpluginprocusertables_priv
Para o MySQL 5.7, segue-se a lista:
audit_log_rules_expandedaudit_log_supported_opsaudit_log_rulescloudsql_replica_indexdbeventfuncgtid_executedheartbeatpluginprocusertables_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@::1Usado 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.1Usado para importações de dados.
cloudsqlexport@localhost,cloudsqlexport@127.0.0.1Usado para exportações de dados.
cloudsqloneshotUsado para outras operações de base de dados.
cloudsqlapplier@localhostUsado para operações de replicação na réplica do servidor externo ou na replicação entre versões principais.
cloudsqlobservabilityadminUsado para a observabilidade da base de dados.
cloudiamgroup@'%'Usado para a autenticação de grupos do IAM.
cloudsqlreadonlyUsado 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_ADMINCONNECTION_ADMINROLE_ADMINSET_USER_IDXA_RECOVER_ADMINCLOUDSQL_SPECIAL_VARIABLES_ADMINFLUSH_OPTIMIZER_COSTSFLUSH_STATUSFLUSH_TABLESFLUSH_USER_RESOURCESINNODB_REDO_LOG_ENABLESHOW_ROUTINEAUTHENTICATION_POLICY_ADMINGROUP_REPLICATION_STREAMPASSWORDLESS_USER_ADMINAUDIT_ABORT_EXEMPT
MySQL 8.0.29 (descontinuado)
APPLICATION_PASSWORD_ADMINCONNECTION_ADMINROLE_ADMINSET_USER_IDXA_RECOVER_ADMINCLOUDSQL_SPECIAL_VARIABLES_ADMINFLUSH_OPTIMIZER_COSTSFLUSH_STATUSFLUSH_TABLESFLUSH_USER_RESOURCESINNODB_REDO_LOG_ENABLESHOW_ROUTINEAUTHENTICATION_POLICY_ADMINGROUP_REPLICATION_STREAMPASSWORDLESS_USER_ADMINAUDIT_ABORT_EXEMPTSENSITIVE_VARIABLES_OBSERVER
MySQL 8.0.30 e posteriores
APPLICATION_PASSWORD_ADMINCONNECTION_ADMINROLE_ADMINSET_USER_IDXA_RECOVER_ADMINCLOUDSQL_SPECIAL_VARIABLES_ADMINFLUSH_OPTIMIZER_COSTSFLUSH_STATUSFLUSH_TABLESFLUSH_USER_RESOURCESINNODB_REDO_LOG_ENABLESHOW_ROUTINEAUTHENTICATION_POLICY_ADMINGROUP_REPLICATION_STREAMPASSWORDLESS_USER_ADMINAUDIT_ABORT_EXEMPTSENSITIVE_VARIABLES_OBSERVERFIREWALL_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, este recebe automaticamente 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_IDe substitui-o pelos privilégiosALLOW_NONEXISTENT_DEFINEReSET_ANY_DEFINERintroduzidos recentemente. - Concede
FLUSH_PRIVILEGEScomo um subconjunto do privilégioRELOAD. Esta concessão não substitui o privilégioRELOADe o privilégioRELOADcontinua 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
rootconta 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 sobre os privilégios fornecidos pelo MySQL.
- Saiba mais sobre as opções de ligação à sua instância.