Acerca dos utilizadores do MySQL

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

MySQL 8.0.29 (descontinuado)

MySQL 8.0.30 e posteriores

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:

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?