Conecte-se ao MySQL no Google Compute Engine a partir do App Engine e externamente

Aug 31 2020

Criei com sucesso uma instância de VM do Compute Engine e instalei o MySQL nela usando este guia: https://cloud.google.com/solutions/setup-mysql

Agora quero me conectar a ele do App Engine e da minha casa também, se possível. Usando este guia:https://cloud.google.com/appengine/docs/standard/python/connecting-vpc Criei o conector, fornecendo a ele o endereço IP 10.8.0.0/28 sugerido.

No app.yaml do meu app engine, inseri: vpc_access_connector: name: projects / locationconnection / locations / europe-west3 / connectors / vpcaccess

A instância da VM mostra um IP interno de 10.156.0.2 e um IP externo de 34.89.141.17

Estou tentando me conectar a partir do PHP usando esta linha: new mysqli ($servername, $nome do usuário, $password, $dbname, 3306, nulo); mas recebo erros diferentes.

Ao conectar-se a 34.89.141.17 de minha casa: mysqli :: __ construct (): (HY000 / 2002): Nenhuma conexão pôde ser feita porque a máquina de destino a recusou ativamente. (Eu até criei uma regra de Firewall para permitir todo o tráfego do meu IP doméstico)

Ao conectar-se a 10.8.0.0 a partir do App Engine: 2002: Tempo limite de conexão esgotado

Ao conectar-se a 10.156.0.2 do App Engine: 2002: Conexão recusada

Como posso fazer uma conexão?

Respostas

DavidC Aug 31 2020 at 17:00

No guia Como configurar o MySQL no Google Compute Engine, mostra como configurar o Mysql, mas tenha em mente que o Mysql tem sua própria configuração. Pelos erros que você mencionou, o problema é sobre o Mysql permitir conexões externas. Quando você adiciona um usuário e concede privilégios a ele (ou com usuários existentes), precisa especificar o host ou intervalo de rede a partir do qual esse usuário tem permissão para se conectar. Por exemplo, esta linha GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';concede todas as permissões ao usuário root e permite conexões do usuário root de todos os hosts (o '%' após o @ é um caractere curinga que significa de todos os hosts). Você pode usar o curinga como este para rede privada. 10.156.0.%O host se aplica para IPs públicos ou para IPs de sua rede privada. Verifique este site para obter mais informações. Como permitir conexões remotas ao MySQL . Lembre-se do risco de segurança de uma política de permissão de host totalmente aberta.