Conectar-se ao cliente MySQL no Compute Engine

Nesta página, descrevemos como usar o cliente mysql, instalado em uma instância do Compute Engine, para se conectar ao Cloud SQL.

Se você estiver se conectando a uma instância do MySQL, poderá usar IP particular, IP público, o Cloud SQL Proxy ou a imagem do proxy do Docker.

Antes de começar

Antes de estabelecer uma conexão com a instância do Cloud SQL, é necessário ter um usuário padrão (root) do banco de dados na instância.

Essa tarefa não inclui instruções para a configuração da instância do Google Compute Engine. Se você precisar de ajuda para criar e configurar uma instância do Google Compute Engine, consulte a documentação do Google Compute Engine.

Como estabelecer uma conexão usando IP particular

Para se conectar ao Cloud SQL por uma instância do Compute Engine usando IP particular, o acesso a serviços particulares precisa ser configurado para o ambiente, e a instância do Cloud SQL precisa ser configurada para usar IP particular. A instância do Compute Engine precisa estar na mesma região da instância do Cloud SQL e na rede configurada para uma conexão particular. Saiba mais

  1. Configure a instância para o uso de IP particular. Siga as instruções em Como configurar a conectividade IP privada.
  2. Abra uma conexão de terminal com a instância do Compute Engine.

    Use as instruções apropriadas, dependendo do sistema operacional da instância:

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

    Debian/Ubuntu

    Instale o cliente MySQL pelo gerenciador de pacotes:

    sudo apt-get update
    sudo apt-get install mysql-server
    

    CentOS/RHEL

    Instale o cliente MySQL pelo gerenciador de pacotes:

    sudo yum install mysql
    

    openSUSE

    Instale o cliente MySQL pelo gerenciador de pacotes:

    sudo zypper install mysql-server
    

    Outras plataformas

    1. Faça o download do MySQL Community Server referente à sua plataforma da página de downloads do MySQL Community Server (em inglês).
      O Community Server inclui o cliente MySQL.
    2. Instale o Community Server, seguindo as instruções na página de downloads.

    Para mais informações sobre a instalação do MySQL, consulte Instalação e upgrade do MySQL (em inglês) no Manual de referência do MySQL.

  4. Estabeleça uma conexão com o cliente MySQL.
    mysql --host=[CLOUD_SQL_PRIVATE_IP_ADDR] --user=root --password
    

Como estabelecer uma conexão usando um endereço IP público

  1. Adicione um endereço IPv4 estático à instância do Compute Engine, se ela ainda não tiver um. Não é possível estabelecer uma conexão com o Compute Engine usando IPv6. Para informações sobre a adição de um endereço IP estático, consulte Como 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 Google Compute Engine como uma rede com permissão para conectar-se à instância do Cloud SQL.

    Para mais informações, consulte Como configurar o acesso para conexões IP.

  3. Abra uma conexão de terminal com a instância do Compute Engine.

    Use as instruções apropriadas, dependendo do sistema operacional da instância:

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

    Debian/Ubuntu

    Instale o cliente MySQL pelo gerenciador de pacotes:

    sudo apt-get update
    sudo apt-get install mysql-server
    

    CentOS/RHEL

    Instale o cliente MySQL pelo gerenciador de pacotes:

    sudo yum install mysql
    

    openSUSE

    Instale o cliente MySQL pelo gerenciador de pacotes:

    sudo zypper install mysql-server
    

    Outras plataformas

    1. Faça o download do MySQL Community Server referente à sua plataforma da página de downloads do MySQL Community Server (em inglês).
      O Community Server inclui o cliente MySQL.
    2. Instale o Community Server, seguindo as instruções na página de downloads.

    Para mais informações sobre a instalação do MySQL, consulte Instalação e upgrade do MySQL (em inglês) no Manual de referência do MySQL.

  5. Estabeleça uma conexão com o cliente MySQL.
    mysql --host=[CLOUD_SQL_PUBLIC_IP_ADDR] --user=root --password
    
    Execute o seguinte comando gcloud para encontrar o CLOUD_SQL_PUBLIC_IP_ADDR:
    gcloud sql instances list
    

    Para um exemplo de como estabelecer uma conexão usando SSL, consulte Como se conectar com SSL.

  6. O prompt do mysql é exibido.
  7. Se você precisar manter as conexões não utilizadas ativas, defina o TCP Keepalive.

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

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

Precisa de ajuda? Para ajuda na solução de problemas com o proxy, consulte Como solucionar problemas nas conexões do Cloud SQL Proxy ou veja a página de suporte do Cloud SQL.

Conexão pelo Cloud SQL Proxy

  1. Ative a API Cloud SQL Admin.

    Ative a API

  2. Crie uma conta de serviço para o proxy.
  3. Caso queira usar uma conta de serviço para fornecer as credenciais ao proxy, você precisará criá-la com permissões suficientes. Se você estiver usando os papéis mais detalhados de gerenciamento de identidade e acesso (IAM) para gerenciar suas permissões do Cloud SQL, atribua à conta de serviço um papel que inclua a permissão cloudsql.instances.connect. Os papéis predefinidos do Cloud SQL que incluem essa permissão são os seguintes:

    • Cliente do Cloud SQL
    • Editor do Cloud SQL
    • Administrador do Cloud SQL

    Se você estiver usando os papéis legados (visualizador, editor e proprietário) do projeto, a conta de serviço precisará ter pelo menos o papel de editor.

    1. Acesse a página Contas de serviço no Console do Google Cloud.

      Acessar a página "Contas de serviço"

    2. Selecione o projeto que contém a instância do Cloud SQL.
    3. Clique em Criar conta de serviço.
    4. Na caixa de diálogo Criar conta de serviço, forneça um nome descritivo para a conta.
    5. Em Papel, selecione um dos seguintes papéis:
      • Cloud SQL > Cliente do Cloud SQL
      • Cloud SQL > Editor do Cloud SQL
      • Cloud SQL > Administrador do Cloud SQL

      Como alternativa, é possível usar o papel primitivo de editor selecionando Projeto > Editor, mas esse papel inclui permissões no Google Cloud.

      Caso não veja esses papéis, talvez o usuário do Google Cloud não tenha a permissão resourcemanager.projects.setIamPolicy. Para verificar suas permissões, acesse a página do IAM no Console do Google Cloud e pesquise seu ID de usuário.

    6. Altere o ID da conta de serviço para um valor exclusivo e facilmente reconhecível.
    7. Clique em Fornecer uma nova chave privada e confirme se o tipo de chave é JSON.
    8. Clique em Criar

      O arquivo da chave privada é transferido para sua máquina. Você pode movê-lo para outro local. Mantenha-o seguro.

  4. Se a instância do Google Compute Engine estiver em um projeto diferente da instância do Cloud SQL, verifique se a respectiva conta de serviço tem as permissões adequadas no projeto que contém a instância do Cloud SQL:
    1. Acesse a listagem de instâncias do Compute Engine no Console do Google Cloud.

      Acessar a listagem 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 exibir as propriedades dela.
    4. Nas propriedades da instância do Compute Engine, copie o nome da conta de serviço.
    5. Acesse a página Projetos do IAM e do administrador no Console do Google Cloud.

      Acessar a página "Projetos do IAM e do administrador"

    6. Selecione o projeto que contém a instância do Cloud SQL.
    7. Procure o nome da conta de serviço.
    8. Se a conta de serviço já estiver lá e tiver um papel que inclua a permissão cloudsql.instances.connect, prossiga para a etapa 4.

      Os papéis Cloud SQL Client, Cloud SQL Editor e Cloud SQL Admin fornecem a permissão necessária, assim como os papéis de projeto Editor e Owner herdados.

    9. Caso contrário, clique em Adicionar para adicioná-la.
    10. Na caixa de diálogo Adicionar membros , forneça o nome da conta de serviço e selecione uma função que inclua a permissão cloudsql.instances.connect (qualquer papel predefinido do Cloud SQL que não seja o Leitor funcionará).

      Como alternativa, é possível usar o papel primitivo de editor selecionando Projeto > Editor, mas esse papel inclui permissões no Google Cloud.

      Caso não veja esses papéis, talvez o usuário do Google Cloud não tenha a permissão resourcemanager.projects.setIamPolicy. Para verificar suas permissões, acesse a página do IAM no Console do Google Cloud e pesquise seu ID de usuário.

    11. Clique em Adicionar.

      Você verá a conta de serviço listada com o papel especificado.

  5. Abra uma conexão de terminal com a instância do Compute Engine.

    Use as instruções apropriadas, dependendo do sistema operacional da instância:

  6. Se a instância do Compute Engine estiver executando uma imagem pública do RHEL ou do CentOS, o SELinux poderá bloquear a conexão de proxy. Se isso acontecer, será necessário configurar o recurso SELinux para permitir a conexão.

    Para mais informações sobre o SELinux para RHEL, consulte a documentação do RHEL (em inglês). Para mais informações sobre o SELinux para CentOS, consulte a documentação do CentOS (em inglês).

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

    Debian/Ubuntu

    Instale o cliente MySQL pelo gerenciador de pacotes:

    sudo apt-get update
    sudo apt-get install mysql-server
    

    CentOS/RHEL

    Instale o cliente MySQL pelo gerenciador de pacotes:

    sudo yum install mysql
    

    openSUSE

    Instale o cliente MySQL pelo gerenciador de pacotes:

    sudo zypper install mysql-server
    

    Outras plataformas

    1. Faça o download do MySQL Community Server referente à sua plataforma da página de downloads do MySQL Community Server (em inglês).
      O Community Server inclui o cliente MySQL.
    2. Instale o Community Server, seguindo as instruções na página de downloads.

    Para mais informações sobre a instalação do MySQL, consulte Instalação e upgrade do MySQL (em inglês) no Manual de referência do MySQL.

  8. Instale o Cloud SQL Proxy na instância do Compute Engine.

    Linux de 64 bits

    1. Faça o download do proxy:
      wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
      
    2. Torne o proxy executável:
      chmod +x cloud_sql_proxy
      

    Linux de 32 bits

    1. Faça o download do proxy:
      wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.386 -O cloud_sql_proxy
      
    2. Torne o proxy executável:
      chmod +x cloud_sql_proxy
      

    Windows de 64 bits

    Para fazer o download do proxy, clique com o botão direito em https://dl.google.com/cloudsql/cloud_sql_proxy_x64.exe e selecione Salvar link como. Renomeie o arquivo para cloud_sql_proxy.exe.

    Windows de 32 bits

    Para fazer o download do proxy, clique com o botão direito em https://dl.google.com/cloudsql/cloud_sql_proxy_x86.exe e selecione Salvar link como. Renomeie o arquivo para cloud_sql_proxy.exe.
    Caso seu sistema operacional não esteja incluído aqui, compile o proxy a partir da fonte.

  9. Inicie o proxy.

    Dependendo da linguagem e do ambiente, inicie o proxy usando os soquetes TCP ou Unix.

    Soquetes TCP

    1. Copie o nome de conexão da instância da página Detalhes da instância.

      Por exemplo, myproject:myregion:myinstance.

    2. Se você estiver usando uma conta de serviço para autenticar o proxy, anote o local em que a chave privada foi criada na máquina cliente durante a criação da conta de serviço.
    3. Inicie o proxy.

      Algumas strings possíveis de chamada do proxy:

      • Usando autenticação do SDK do Cloud:
        ./cloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:3306
        
        A porta especificada não pode estar em uso, por exemplo, por um servidor de banco de dados local.
      • Usar uma conta de serviço e incluir explicitamente o nome da conexão da instância (recomendado para ambientes de produção):
        ./cloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:3306 \
                          -credential_file=<PATH_TO_KEY_FILE> &
        

      Para mais informações sobre as opções de proxy, consulte Opções para autenticar o proxy e Opções para especificar instâncias.

    Soquetes Unix

    1. Se estiver usando a especificação explícita de instâncias, copie o nome de conexão da instância da página Detalhes da instância.
    2. Crie o diretório em que os soquetes do proxy ficarão:
      sudo mkdir /cloudsql; sudo chmod 777 /cloudsql
    3. Se você estiver usando uma conta de serviço para autenticar o proxy, anote o local em que a chave privada foi criada na máquina cliente durante a criação da conta de serviço.
    4. Abra uma nova janela de terminal e inicie o proxy.

      Algumas strings possíveis de chamada do proxy:

      • Usar uma conta de serviço e incluir explicitamente o nome da conexão da instância (recomendado para ambientes de produção):
        ./cloud_sql_proxy -dir=/cloudsql -instances=<INSTANCE_CONNECTION_NAME> \
                          -credential_file=<PATH_TO_KEY_FILE> &
      • Usando a autenticação do Cloud SDK e a descoberta automática de instância:
        ./cloud_sql_proxy -dir=/cloudsql &

      É melhor iniciar o proxy em seu próprio terminal, assim é possível monitorar as respostas dele sem misturá-las com as respostas de outros programas.

      Para mais informações sobre as opções de proxy, consulte Opções para autenticar o proxy e Opções para especificar instâncias.

    5. Ao usar um soquete Unix para se conectar ao Cloud SQL usando o Cloud SQL Proxy, verifique se comprimento do nome de arquivo do soquete não ultrapassa o limite do sistema. Depende do sistema, mas geralmente é entre 91 e 108 caracteres. No Linux, o tamanho geralmente é definido como 108. Use o seguinte comando para verificar:
      cat /usr/include/linux/un.h | grep "define UNIX_PATH_MAX"
  10. Inicie a sessão mysql.

    A inicialização do proxy usando um soquete TCP ou UNIX determina a string de conexão a ser utilizada.

    Soquetes TCP

    1. Inicie o cliente MySQL:
      mysql -u <USERNAME> -p --host 127.0.0.1
      

      Quando você estabelece a conexão com sockets TCP, o endereço de acesso do proxy é 127.0.0.1.

    2. Se solicitado, digite a senha.
    3. O prompt do mysql é exibido.

    Soquetes Unix

    1. Inicie o cliente MySQL:
      mysql -u <USERNAME> -p -S /cloudsql/<INSTANCE_CONNECTION_NAME>
      
    2. Digite a senha.
    3. O prompt do mysql é exibido.

Precisa de ajuda? Para ajuda na solução de problemas com o proxy, consulte Como solucionar problemas nas conexões do Cloud SQL Proxy ou veja a página de suporte do Cloud SQL.

A seguir