2016-07-20 21 views
1

Ich habe GAE/Python-Anwendung (App Engine Standard Edition) im selben Projekt wie (2. Generation) CloudSQL, in der gleichen Region.Gae/cloudsql Fehler: Zugriff verweigert für Benutzer 'root' @ 'cloudsqlproxy

aber ich weiterhin folgende Fehler erhalten

OperationalError: (1045, "Access denied for user 'root'@'cloudsqlproxy~xx.xxx.xx.xx' (using password: NO)") 

Die Apps automatisch autorisiert bekommen, so kann das Problem nicht herausfinden. Auch sollte nicht die Verbindung von root @ localhost statt cloudsqlproxy sein? Muss ich einen 'root' @ 'cloudsqlproxy Benutzer erstellen?

Antwort

2

Wenn Sie ein Root-Kennwort für Ihre Instanz festlegen, müssen Sie dieses Kennwort beim Herstellen der Verbindung angeben.

Die Instanzen der ersten Generation kommen mit einem Root-Benutzer mit einem leeren Kennwort aus der Box, die Instanzen der zweiten Generation jedoch nicht. Für eine Instanz der zweiten Generation sollten Sie das root-Passwort festlegen und dieses in Ihrer App verwenden.

Dies könnte in unserer Dokumentation geklärt werden. Wenn Sie keinen Root-Benutzer mit einem leeren Kennwort erstellen, wird das Problem vermieden, dass die Datenbank geöffnet wird, falls die Netzwerk-ACLs falsch konfiguriert sind.

+1

Großartig. Danke, es funktioniert, wenn ich passwd Parameter hinzufüge. Das ist seltsam, da ich aus Dokumenten verstehe, dass GAE automatisch ohne Passwort zugreifen kann. – Nick

+0

Können Sie mich auf Dokumente verweisen, die verwirrend sein könnten, damit wir sie verbessern können? Die Verbindungen durchlaufen die normale mysql-Authentifizierung. Sie können entweder das standardmäßige root-Konto verwenden oder ein anderes Konto erstellen. In jedem Fall müssen Sie jedoch die korrekten Anmeldeinformationen für den Benutzer angeben. – Vadim

+0

@Vadim, ich glaube, dass Nick war verwirrt, weil auf Cloud SQL der ersten Generation das Passwort nicht erforderlich war, wenn Sie über GAE verbinden. IMO ist es erwähnenswert in den Dokumenten explizit. – Tzach