Collegati a MySQL su Google Compute Engine da App Engine ed esternamente

Aug 31 2020

Ho creato con successo un'istanza VM di Compute Engine e ho installato MySQL su di essa utilizzando questa guida: https://cloud.google.com/solutions/setup-mysql

Ora voglio collegarmi ad esso da App Engine e anche da casa mia, se possibile. Utilizzando questa guida:https://cloud.google.com/appengine/docs/standard/python/connecting-vpc Ho creato il connettore, dandogli l'indirizzo IP 10.8.0.0/28 suggerito.

Nell'app.yaml del mio app engine ho inserito: vpc_access_connector: name: projects / locationconnection / locations / europe-west3 / Connectors / vpcaccess

L'istanza VM mostra un IP interno di 10.156.0.2 e un IP esterno di 34.89.141.17

Sto cercando di connettermi da PHP usando questa riga: new mysqli ($servername, $nome utente, $password, $dbname, 3306, null); ma ottengo errori diversi.

Quando mi connetto a 34.89.141.17 da casa mia: mysqli :: __ construct (): (HY000 / 2002): Non è stato possibile stabilire alcuna connessione perché la macchina di destinazione l'ha rifiutata attivamente. (Ho persino creato una regola del firewall per consentire tutto il traffico dal mio IP di casa)

Durante la connessione a 10.8.0.0 dal motore dell'app: 2002: connessione scaduta

Durante la connessione a 10.156.0.2 dal motore dell'app: 2002: connessione rifiutata

Come posso stabilire una connessione?

Risposte

DavidC Aug 31 2020 at 17:00

Sulla guida How to Set Up MySQL su Google Compute Engine mostra come configurare Mysql ma tieni presente che Mysql ha una propria configurazione. Dagli errori che hai menzionato, il problema riguarda Mysql che consente connessioni esterne. Quando si aggiunge un utente e gli si concedono i privilegi (o con gli utenti esistenti) è necessario specificare l'host o l'intervallo di rete da cui l'utente è autorizzato a connettersi. Ad esempio, questa riga GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';concede tutte le autorizzazioni all'utente root e consente le connessioni dall'utente root da tutti gli host (il '%' dopo la @ è un carattere jolly che significa da tutti gli host). Puoi usare il carattere jolly in questo modo per la rete privata. 10.156.0.%L'host richiede IP pubblici o IP dalla tua rete privata. Controllare questo sito per ulteriori informazioni su come consentire le connessioni remote a MySQL . Tieni presente il rischio per la sicurezza di una policy di hosting aperta.