Meine Google App Engine-Anwendung kann keine Verbindung zur Google Cloud-Sql-Instanz mit diesem Fehler herstellen:
%Vor%Ich habe die Dokumentation überprüft und die Anweisungen genau befolgt. Ich habe die App als eine autorisierte Anwendung hinzugefügt und das Root-Passwort mit der Cloud-Konsole festgelegt. Ich habe dem Instace auch eine IP-Adresse gegeben und kann mich von Workbench auf dem lokalen Entwicklungscomputer verbinden. Mit Workbench habe ich einen Benutzer hinzugefügt und Berechtigungen konfiguriert. Aber ich kann immer noch nicht von der Entwicklungsversion der App (dieselbe IP wie Workbench) oder der bereitgestellten App aus eine Verbindung herstellen.
Hier ist meine Verbindungslinie:
%Vor%Diese Frage scheint zu sein ähnlich diesem Problem. Aber auch nach dem Einrichten eines neuen Benutzers und dem Erteilen von Berechtigungen kann ich keine Verbindung herstellen. Irgendeine Idee, wo ich falsch gelaufen bin?
Danke
Beachten Sie, dass das Setzen der Root-Passwörter nur die Verbindungen betrifft, die über IP kommen. Die Verbindungen von App-Engines zu dem MySQL-Server werden als von localhost kommend angezeigt. Stellen Sie also sicher, dass das Passwort für 'root @ localhost' das ist, das Sie im Code konfiguriert haben.
Eine schnelle Möglichkeit, den Status der Kennwörter zu überprüfen, besteht darin, eine Verbindung über IP herzustellen und die folgende Abfrage auszuführen:
%Vor%Die obige Abbildung zeigt, wie eine Instanz angezeigt wird, nachdem das root-Passwort für Verbindungen über IP ('root @%') auf 'xxx' gesetzt wurde. Beachten Sie, dass das Kennwort für "root @ localhost" leer ist, sodass Verbindungen von App Engine weiterhin keine Kennwörter erfordern.
Wenn Sie von einer autorisierten App Engine-Anwendung aus eine Verbindung zu Cloud SQL herstellen, ist das Kennwort nicht erforderlich (es schlägt tatsächlich fehl, wenn Sie versuchen, eine Verbindung mit dem Kennwort herzustellen).
Ändern Sie Ihre Verbindungszeichenfolge zu jdbc: google: mysql: ///? user = root unter Weglassung des & amp; password = part
Eine Sache, die ich versuchte, war, mich über einen MySQL-Client direkt mit meinem Proxy zu verbinden, um zu sehen, ob mein Code das Problem war: Siehe: Verbinden des mysql-Clients mit dem Cloud SQL-Proxy
Das hat bei mir immer noch nicht funktioniert, was mich zu der Annahme verleitet hat, es könnte etwas mit der tatsächlichen Netzwerkverbindung sein. Ich bemerkte, dass der Cloud SQL-Proxy, den ich lokal ausführte, die IP-Adresse der richtigen Instanz zurückgab (der Fehler sah etwa so aus:
%Vor%Sie können bestätigen, dass die dort zurückgegebene IP-Adresse mit der in der Cloud SQL-Konsole übereinstimmt.
Ich habe dann versucht, über eine andere Internetverbindung eine Verbindung herzustellen und konnte mich verbinden. Es stellte sich heraus, dass die Firewall in der ursprünglichen Verbindung die Verbindung nicht passieren ließ! Überprüfen Sie alle Sicherheitseinstellungen, die verhindern, dass die Verbindung durchgeht.
Tags und Links php google-app-engine google-cloud-sql