Ich habe eine Google Cloud Project MySQL-Datenbank zur Verwendung in Verbindung mit dem von Google Apps Script bereitgestellten Jdbc-Dienst erstellt. Mit dem Anschluss lief alles wie geplant. Ich verbinde im Grunde wie in den Dokumenten.
var conn = Jdbc.getCloudSqlConnection(dbUrl, user, userPwd);
Ich habe die Datei mit einem anderen Konto geteilt und plötzlich sehe ich einen roten Fehler, der besagt:
'Datenbankverbindung konnte nicht hergestellt werden. Überprüfen Sie die Verbindungszeichenfolge, den Benutzernamen und das Passwort.'
Am Code hat sich nichts geändert, aber es ist ein Fehler aufgetreten. Wenn ich zu meinem ursprünglichen Konto zurückkehre und denselben Code ausführe, gibt es keinen Fehler. Was passiert hier? Irgendwelche Ideen?
Lösung des Problems
Ich denke, das ist ein Berechtigungsproblem in Ihrem zweiten Konto. In Ihrer Frage fehlen notwendige Informationen. Wenn das zweite Konto jedoch als ein anderer Benutzer ausgeführt wird, verfügt es nicht unbedingt über Ihre sqlservice-Autorisierung. Die Erlaubnis,
https://www.googleapis.com/auth/sqlservice
Verwalten Sie die Daten in Ihren Google SQL Service-Instanzen
ist erforderlich, um zu verwenden Jdbc.getCloudSqlConnection(url)
, während Jdbc#getConnectionUrl()
nur die Berechtigung zum Herstellen einer externen Verbindung erforderlich ist
https://www.googleapis.com/auth/script.external_request
Ich glaube, dass Sie nur eine Verbindung zu SQL-Instanzen herstellen können, die Ihnen gehören und für getCloudSqlConnection()
die nicht einmal eine externe Verbindungsberechtigung erforderlich ist. Diese Methode ruft wahrscheinlich Ihre SQL-Instanz intern auf.
Verweise:
Jdbc#getCloudConnection
Jdbc#getConnection
Fazit
Um eine Verbindung zu einem externen Dienst herzustellen, benötigen Sie eine external_request
Genehmigung. Sie benötigen diese Berechtigung jedoch nicht, um eine Verbindung zu Ihren eigenen Dokumenten herzustellen, z SpreadsheetApp.openByUrl()
. Ich glaube, mit ist es genauso Jdbc.getCloudSqlConnection()
. Es ruft Ihr Google-SQL intern auf. Selbst wenn Sie die Berechtigung für externe Anfragen erteilen, funktioniert es nicht. Was für diese Methode funktioniert, ist
Installierbare Trigger (die wie Sie ausgeführt werden).
Fügen Sie das zweite Konto auch als Eigentümer in GCP-IAM hinzu (funktioniert jedoch möglicherweise nicht). Siehe diese Antwort
Keine Kommentare:
Kommentar veröffentlichen