Ligue a partir do Compute Engine

Esta página descreve como usar o cliente mysql, instalado numa instância do Compute Engine, para se ligar ao Cloud SQL.

Pode usar o IP privado, o IP público, o proxy Auth do Cloud SQL ou a imagem Docker do proxy Auth do Cloud SQL.

Para ver instruções passo a passo sobre a execução de uma aplicação Web de exemplo do Compute Engine ligada ao Cloud SQL, consulte o início rápido para estabelecer ligação a partir do Compute Engine.

Antes de começar

Esta tarefa não inclui instruções para configurar a sua instância do Compute Engine. Se precisar de ajuda para criar e configurar uma instância do Compute Engine, consulte a documentação do Compute Engine.

IP privado

Para estabelecer ligação ao Cloud SQL a partir de uma instância do Compute Engine através do IP privado, tem de configurar o acesso privado a serviços para o seu ambiente e configurar a instância do Cloud SQL para usar o IP privado. A instância do Compute Engine tem de estar na mesma região que a instância do Cloud SQL e na rede configurada para uma ligação privada. Saiba mais.

1. Configure a sua instância para usar o IP privado

Use as instruções em Configurar a conetividade de IP privado.

2. Abra uma ligação de terminal do Cloud Shell à sua instância do Compute Engine.

Use as instruções adequadas, consoante o sistema operativo da instância:

Se a sua instância do Compute Engine estiver a executar uma imagem pública do RHEL ou do CentOS, o SELinux pode bloquear a ligação proxy. Se isto acontecer, tem de configurar a funcionalidade SELinux para permitir a ligação.

Para mais informações sobre o SELinux para o RHEL, consulte a documentação do RHEL. Para mais informações sobre o SELinux para o CentOS, consulte a documentação do CentOS.

3. Instale o cliente mysql na instância do Compute Engine, se ainda não estiver instalado.

  1. Transfira o MySQL Community Server para a sua plataforma a partir da página de transferência do MySQL Community Server.
    O servidor da comunidade inclui o cliente MySQL.
  2. Instale o servidor da comunidade seguindo as instruções na página de transferência.

Para mais informações sobre a instalação do MySQL, consulte o artigo Instalar e atualizar o MySQL.

4. Ligue-se ao cliente mysql.

mysql -h CLOUD_SQL_PRIVATE_IP_ADDRESS -u USERNAME -p

Pode encontrar o endereço IP privado na página de instâncias do Cloud SQL ou executando o seguinte comando gcloud:

gcloud sql instances list

IP público

Para estabelecer ligação através do IP público:


Para seguir orientações passo a passo para esta tarefa diretamente no editor do Cloud Shell, clique em Orientar-me:

Visita guiada


1. Adicione um endereço IP IPv4 estático à instância do Compute Engine, se ainda não tiver um.

Não pode estabelecer ligação ao Compute Engine através do IPv6. Para obter informações sobre como adicionar um endereço IP estático, consulte o artigo Reservar um novo endereço IP externo estático na documentação do Compute Engine.

2. Autorize o endereço IP estático da instância do Compute Engine como uma rede que pode estabelecer ligação à sua instância do Cloud SQL.

Para mais informações, consulte o artigo Configurar o acesso para ligações de IP público.

3. Abra uma ligação de terminal do Cloud Shell à sua instância do Compute Engine.

Use as instruções adequadas, consoante o sistema operativo da instância:

Se a sua instância do Compute Engine estiver a executar uma imagem pública do RHEL ou do CentOS, o SELinux pode bloquear a ligação proxy. Se isto acontecer, tem de configurar a funcionalidade SELinux para permitir a ligação.

Para mais informações sobre o SELinux para o RHEL, consulte a documentação do RHEL. Para mais informações sobre o SELinux para o CentOS, consulte a documentação do CentOS.

4. Instale o cliente mysql na instância do Compute Engine, se ainda não estiver instalado.

  1. Transfira o MySQL Community Server para a sua plataforma a partir da página de transferência do MySQL Community Server.
    O servidor da comunidade inclui o cliente MySQL.
  2. Instale o servidor da comunidade seguindo as instruções na página de transferência.

Para mais informações sobre a instalação do MySQL, consulte o artigo Instalar e atualizar o MySQL.

5. Ligue-se ao cliente mysql.

mysql -h CLOUD_SQL_PUBLIC_IP_ADDR -u USERNAME -p

Pode encontrar o endereço IP público na página de instâncias do Cloud SQL ou executando o seguinte comando gcloud:

gcloud sql instances list

Para ver um exemplo de como estabelecer ligação através de SSL, consulte o artigo Estabelecer ligação com SSL.

6. É apresentada a linha de comandos do mysql.

7. Se precisar de manter as ligações não usadas ativas:

Defina o TCP keepalive.

Para mais informações, consulte o artigo Comunicação entre as suas instâncias e a Internet na documentação do Compute Engine.

As ligações são mantidas ativas automaticamente para instâncias.

Proxy Auth do Cloud SQL

Para estabelecer ligação através do proxy Auth do Cloud SQL a partir do Compute Engine:

1. Ative a API Admin do Cloud SQL.

Roles required to enable APIs

To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

Enable the API

2. Crie uma conta de serviço.

  1. Na Google Cloud consola, aceda à página Contas de serviço.

    Aceda a Contas de serviço

  2. Selecione o projeto que contém a sua instância do Cloud SQL.
  3. Clique em Criar conta de serviço.
  4. No campo Nome da conta de serviço, introduza um nome descritivo para a conta de serviço.
  5. Altere o ID da conta de serviço para um valor único e reconhecível e, de seguida, clique em Criar e continuar.
  6. Clique no campo Selecionar uma função e selecione uma das seguintes funções:
    • Cloud SQL > Cliente do Cloud SQL
    • Cloud SQL > Editor do Cloud SQL
    • Cloud SQL > Administração do Cloud SQL
  7. Clique em Concluído para terminar de criar a conta de serviço.
  8. Clique no menu de ações da nova conta de serviço e, de seguida, selecione Gerir chaves.
  9. Clique no menu pendente Adicionar chave e, de seguida, em Criar nova chave.
  10. Confirme que o tipo de chave é JSON e, de seguida, clique em Criar.

    O ficheiro de chave privada é transferido para o seu computador. Pode movê-lo para outra localização. Mantenha o ficheiro de chave seguro.

Se a instância do Compute Engine estiver num projeto diferente da instância do Cloud SQL, certifique-se de que a respetiva conta de serviço tem as autorizações adequadas no projeto que contém a instância do Cloud SQL:

  1. Aceda à lista de instâncias do Compute Engine na Google Cloud consola.

    Aceda à lista de instâncias do Compute Engine

  2. Se necessário, selecione o projeto associado à instância do Compute Engine.
  3. Selecione a instância do Compute Engine para apresentar as respetivas propriedades.
  4. Nas propriedades da instância do Compute Engine, copie o nome da conta de serviço.
  5. Aceda à página Projetos de IAM e de administração na Google Cloud consola.

    Aceda à página Projetos de IAM e administração

  6. Selecione o projeto que contém a instância do Cloud SQL.
  7. Pesquise o nome da conta de serviço.
  8. Se a conta de serviço já existir e tiver uma função que inclua a autorização cloudsql.instances.connect, pode avançar para o passo 4.

    As funções Cloud SQL Client, Cloud SQL Editor e Cloud SQL Admin fornecem todas as autorizações necessárias, tal como as funções de projeto Editor e Owner antigas.

  9. Caso contrário, adicione a conta de serviço clicando em Adicionar.
  10. Na caixa de diálogo Adicionar responsáveis, indique o nome da conta de serviço e selecione uma função que inclua a autorização cloudsql.instances.connect (qualquer função predefinida do Cloud SQL que não seja a de visitante funciona).

    Em alternativa, pode usar a função básica de editor selecionando Projeto > Editor, mas a função de editor inclui autorizações em todas as áreas Google Cloud.

    Se não vir estas funções, o seu Google Cloud utilizador pode não ter a autorizaçãoresourcemanager.projects.setIamPolicy. Pode verificar as suas autorizações acedendo à página IAM na Google Cloud consola e pesquisando o seu ID de utilizador.

  11. Clique em Adicionar.

    Agora, vê a conta de serviço listada com a função especificada.

3. Abra uma ligação de terminal à sua instância do Compute Engine.

Use as instruções adequadas, consoante o sistema operativo da instância:

Se a sua instância do Compute Engine estiver a executar uma imagem pública do RHEL ou do CentOS, o SELinux pode bloquear a ligação proxy. Se isto acontecer, tem de configurar a funcionalidade SELinux para permitir a ligação.

Para mais informações sobre o SELinux para o RHEL, consulte a documentação do RHEL. Para mais informações sobre o SELinux para o CentOS, consulte a documentação do CentOS.

4. Instale o cliente mysql na instância do Compute Engine, se ainda não estiver instalado.

  1. Transfira o MySQL Community Server para a sua plataforma a partir da página de transferência do MySQL Community Server.
    O servidor da comunidade inclui o cliente MySQL.
  2. Instale o servidor da comunidade seguindo as instruções na página de transferência.

Para mais informações sobre a instalação do MySQL, consulte o artigo Instalar e atualizar o MySQL.

5. Instale o proxy Auth do Cloud SQL na instância do Compute Engine.

Linux (64 bits)

  1. Transfira o proxy Auth do Cloud SQL:
    curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.18.2/cloud-sql-proxy.linux.amd64
  2. Torne o proxy Auth do Cloud SQL executável:
    chmod +x cloud-sql-proxy

Linux (32 bits)

  1. Transfira o proxy Auth do Cloud SQL:
    curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.18.2/cloud-sql-proxy.linux.386
  2. Se o comando curl não for encontrado, execute sudo apt install curl e repita o comando de transferência.
  3. Torne o proxy Auth do Cloud SQL executável:
    chmod +x cloud-sql-proxy

Windows (64 bits)

Clique com o botão direito do rato em https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.18.2/cloud-sql-proxy.x64.exe e selecione Guardar link como para transferir o proxy Auth do Cloud SQL. Mude o nome do ficheiro para cloud-sql-proxy.exe.

Windows (32 bits)

Clique com o botão direito do rato em https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.18.2/cloud-sql-proxy.x86.exe e selecione Guardar link como para transferir o proxy Auth do Cloud SQL. Mude o nome do ficheiro para cloud-sql-proxy.exe.

Imagem do Docker do proxy Auth do Cloud SQL

O proxy Auth do Cloud SQL tem diferentes imagens de contentores, como distroless, alpine e buster. A imagem do contentor do proxy Auth do Cloud SQL predefinida usa o distroless, que não contém nenhuma shell. Se precisar de um shell ou de ferramentas relacionadas, transfira uma imagem com base no alpine ou no buster. Para mais informações, consulte o artigo Imagens de contentores do proxy Auth do Cloud SQL.

Pode transferir a imagem mais recente para a sua máquina local através do Docker com o seguinte comando:

docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.18.2

Outro SO

Para outros sistemas operativos não incluídos aqui, pode compilar o proxy Auth do Cloud SQL a partir da origem.

6. Inicie o proxy Auth do Cloud SQL.

Consoante o seu idioma e ambiente, pode iniciar o proxy Auth do Cloud SQL através de sockets TCP, sockets Unix ou da imagem Docker do proxy Auth do Cloud SQL. O binário do proxy Auth do Cloud SQL liga-se a uma ou mais instâncias do Cloud SQL especificadas na linha de comandos e abre uma ligação local como TCP ou um soquete Unix. Outras aplicações e serviços, como o código da sua aplicação ou as ferramentas de cliente de gestão de bases de dados, podem ligar-se a instâncias do Cloud SQL através dessas ligações TCP ou de soquetes Unix.

Entradas TCP

Para ligações TCP, o proxy Auth do Cloud SQL escuta em localhost(127.0.0.1) por predefinição. Assim, quando especifica --port PORT_NUMBER para uma instância, a ligação local está em 127.0.0.1:PORT_NUMBER.

Em alternativa, pode especificar um endereço diferente para a ligação local. Por exemplo, veja como fazer com que o proxy Auth do Cloud SQL ouça em 0.0.0.0:1234 para a ligação local:

./cloud-sql-proxy --address 0.0.0.0 --port 1234 INSTANCE_CONNECTION_NAME
  1. Copie o INSTANCE_CONNECTION_NAME. Pode encontrá-lo na página Vista geral da sua instância na consola Google Cloud ou executando o seguinte comando:

        gcloud sql instances describe INSTANCE_NAME --format='value(connectionName)'

    Por exemplo: myproject:myregion:myinstance.

  2. Se a instância tiver um IP público e privado configurados e quiser que o proxy Auth do Cloud SQL use o endereço IP privado, tem de fornecer a seguinte opção quando iniciar o proxy Auth do Cloud SQL:
    --private-ip
  3. Se estiver a usar uma conta de serviço para autenticar o proxy Auth do Cloud SQL, tenha em atenção a localização no seu computador cliente do ficheiro de chave privada que foi criado quando criou a conta de serviço.
  4. Inicie o proxy Auth do Cloud SQL.

    Algumas strings de invocação possíveis do proxy Auth do Cloud SQL:

    • Usando a autenticação do SDK Cloud:
      ./cloud-sql-proxy --port 3306 INSTANCE_CONNECTION_NAME
      A porta especificada não pode estar já a ser usada, por exemplo, por um servidor de base de dados local.
    • Usar uma conta de serviço e incluir explicitamente o nome da ligação da instância (recomendado para ambientes de produção):
      ./cloud-sql-proxy \
      --credentials-file PATH_TO_KEY_FILE INSTANCE_CONNECTION_NAME &

    Para mais informações sobre as opções do proxy Auth do Cloud SQL, consulte o artigo Opções para autenticar o proxy Auth do Cloud SQL.

Sockets Unix

O proxy Auth do Cloud SQL pode ouvir num soquete Unix, que é um mecanismo padrão Posix para usar uma pasta para gerir a comunicação entre dois processos em execução no mesmo anfitrião. As vantagens da utilização de sockets Unix são a melhoria da segurança e a redução da latência. No entanto, não pode aceder a um socket Unix a partir de uma máquina externa.

Para criar e usar um socket Unix, o diretório de destino tem de existir e o proxy Auth do Cloud SQL e a aplicação têm de ter acesso de leitura e escrita ao mesmo.

  1. Copie o INSTANCE_CONNECTION_NAME. Pode encontrá-lo na página Vista geral da sua instância na consola Google Cloud ou executando o seguinte comando:

        gcloud sql instances describe INSTANCE_NAME --format='value(connectionName)'

    Por exemplo: myproject:myregion:myinstance.

  2. Crie o diretório onde os soquetes do proxy Auth do Cloud SQL vão residir:
    sudo mkdir /cloudsql; sudo chmod 777 /cloudsql
  3. Se estiver a usar uma conta de serviço para autenticar o proxy Auth do Cloud SQL, tenha em atenção a localização no seu computador cliente do ficheiro de chave privada que foi criado quando criou a conta de serviço.
  4. Abra uma nova janela de terminal do Cloud Shell e inicie o Proxy Auth do Cloud SQL.

    Algumas strings de invocação possíveis do proxy Auth do Cloud SQL:

    • Usando a autenticação do SDK Cloud da Google:
      ./cloud-sql-proxy --unix-socket /cloudsql INSTANCE_CONNECTION_NAME &
    • Usar uma conta de serviço:
        ./cloud-sql-proxy --unix-socket /cloudsql
        --credentials-file PATH_TO_KEY_FILE INSTANCE_CONNECTION_NAME &

    Inicie o proxy Auth do Cloud SQL no respetivo terminal do Cloud Shell para poder monitorizar o respetivo resultado sem que se misture com o resultado de outros programas.

    Para mais informações sobre as opções do proxy Auth do Cloud SQL, consulte o artigo Opções para autenticar o proxy Auth do Cloud SQL.

Docker

Para executar o proxy Auth do Cloud SQL num contentor Docker, use a imagem Docker do proxy Auth do Cloud SQL disponível no Google Container Registry.

Pode iniciar o proxy Auth do Cloud SQL através de sockets TCP ou sockets Unix, com os comandos apresentados abaixo. As opções usam um INSTANCE_CONNECTION_NAME como a string de ligação para identificar uma instância do Cloud SQL. Pode encontrar o INSTANCE_CONNECTION_NAME na página Vista geral da sua instância na Google Cloud consola. Em alternativa, pode executar o seguinte comando:

gcloud sql instances describe INSTANCE_NAME
.

Por exemplo: myproject:myregion:myinstance.

Consoante o seu idioma e ambiente, pode iniciar o proxy Auth do Cloud SQL através de sockets TCP ou sockets Unix. Os sockets Unix não são suportados para aplicações escritas na linguagem de programação Java nem para o ambiente Windows.

Usar entradas TCP

docker run -d \\
  -v PATH_TO_KEY_FILE:/path/to/service-account-key.json \\
  -p 127.0.0.1:3306:3306 \\
  gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.18.2 \\
  --address 0.0.0.0 --port 3306 \\
  --credentials-file /path/to/service-account-key.json INSTANCE_CONNECTION_NAME

Se estiver a usar as credenciais fornecidas pela sua instância do Compute Engine, não inclua o parâmetro --credentials-file e a linha -v PATH_TO_KEY_FILE:/path/to/service-account-key.json.

Especifique sempre o prefixo 127.0.0.1 em -p para que o proxy Auth do Cloud SQL não seja exposto fora do anfitrião local. O "0.0.0.0" no parâmetro instances é necessário para tornar a porta acessível a partir do exterior do contentor do Docker.

Usar sockets Unix

docker run -d -v /cloudsql:/cloudsql \\
  -v PATH_TO_KEY_FILE:/path/to/service-account-key.json \\
  gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.18.2 --unix-socket=/cloudsql \\
  --credentials-file /path/to/service-account-key.json INSTANCE_CONNECTION_NAME

Se estiver a usar as credenciais fornecidas pela sua instância do Compute Engine, não inclua o parâmetro --credentials-file e a linha -v PATH_TO_KEY_FILE:/path/to/service-account-key.json.

Se estiver a usar uma imagem otimizada para contentores, use um diretório gravável em vez de /cloudsql, por exemplo:

-v /mnt/stateful_partition/cloudsql:/cloudsql

Pode especificar mais do que uma instância, separadas por vírgulas. Também pode usar os metadados do Compute Engine para determinar dinamicamente as instâncias às quais estabelecer ligação. Saiba mais acerca dos parâmetros do proxy Auth do Cloud SQL.

7. Inicie a sessão do mysql.

A string de ligação que usa depende de ter iniciado o proxy Auth do Cloud SQL com um socket TCP, um socket UNIX ou o Docker.

Entradas TCP

  1. Inicie o cliente mysql:
    mysql -u USERNAME -p --host 127.0.0.1
    Se estiver a estabelecer ligação a uma instância do MySQL 8.4, use o seguinte comando:
    mysql -u USERNAME -p --host 127.0.0.1 --get-server-public-key

    Quando se liga através de sockets TCP, acede-se ao proxy Auth do Cloud SQL através de 127.0.0.1.

  2. Se lhe for pedido, introduza a palavra-passe.
  3. É apresentada a linha de comandos do mysql.

Usar sockets Unix

  1. Inicie o cliente mysql:
    mysql -u USERNAME -p -S /cloudsql/INSTANCE_CONNECTION_NAME

    Nota: não pode usar o proxy Auth do Cloud SQL através de uma ligação de socket UNIX a uma instância do MySQL 8.4.

  2. Introduza a palavra-passe.
  3. É apresentada a linha de comandos do mysql.

Precisa de ajuda? Para obter ajuda na resolução de problemas do proxy, consulte o artigo Resolução de problemas de ligações do proxy Auth do Cloud SQL ou consulte a nossa página de apoio técnico do Cloud SQL.

O que se segue?