Von Compute Engine aus verbinden

Auf dieser Seite wird beschrieben, wie Sie mit dem sqlcmd-Client, der auf einer Compute Engine-Instanz installiert ist, eine Verbindung zu Cloud SQL herstellen können.

Sie können dafür private IP-Adressen, öffentliche IP-Adressen, den Cloud SQL Auth-Proxy oder das Cloud SQL Auth-Proxy-Docker-Image verwenden.

Schritt-für-Schritt-Anleitungen zum Ausführen einer Compute Engine-Beispiel-Webanwendung, die mit Cloud SQL verbunden ist, finden Sie in der Kurzanleitung zum Herstellen einer Verbindung von Compute Engine..

Hinweis

Diese Aufgabe enthält keine Anleitungen für das Einrichten Ihrer Compute Engine-Instanz. Informationen zum Erstellen und Konfigurieren einer Compute Engine-Instanz finden Sie in der Compute Engine-Dokumentation.

Private IP-Adresse

Wenn Sie eine Compute Engine-Instanz über eine private IP-Adresse mit Cloud SQL verbinden möchten, müssen folgende Voraussetzungen erfüllt sein: Der private Zugriff auf Dienste für die Umgebung muss eingerichtet und die Cloud SQL-Instanz für die Verwendung privater IP-Adressen muss konfiguriert sein. Die Compute Engine-Instanz muss sich in derselben Region wie Ihre Cloud SQL-Instanz und in dem Netzwerk befinden, das für eine private Verbindung konfiguriert ist. Weitere Informationen

1. Konfigurieren Sie die Instanz für die Verwendung privater IP-Adressen.

Folgen Sie der Anleitung unter Private IP-Verbindungen konfigurieren.

2. Stellen Sie eine Cloud Shell-Terminalverbindung zu Ihrer Compute Engine-Instanz her.

Verwenden Sie abhängig vom Betriebssystem der Instanz die entsprechende Anleitung:

Wenn auf Ihrer Compute Engine-Instanz ein öffentliches RHEL- oder CentOS-Image ausgeführt wird, blockiert SELinux unter Umständen die Proxy-Verbindung. Wenn dies geschieht, müssen Sie die SELinux-Funktion so konfigurieren, dass sie die Verbindung zulässt.

Weitere Informationen über SELinux für RHEL finden Sie in der RHEL-Dokumentation. Weitere Informationen über SELinux für CentOS finden Sie in der CentOS-Dokumentation.

3. Installieren Sie den sqlcmd-Client auf der Compute Engine-Instanz, falls er noch nicht installiert ist.

Debian/Ubuntu

Für Debian/Ubuntu installieren Sie die entsprechenden SQL Server-Befehlszeilentools.

CentOS/RHEL

Für CentOS/RHEL installieren Sie die entsprechenden SQL Server-Befehlszeilentools.

openSUSE

Für openSUSE installieren Sie die entsprechenden SQL Server-Befehlszeilentools.

Andere Plattformen

Weitere Informationen finden Sie auf der Landingpage zur SQL Server-Installation und der SQL Server-Downloadseite.

4. Mit dem sqlcmd-Client verbinden.

sqlcmd -S CLOUD_SQL_PRIVATE_IP_ADDRESS -U USERNAME

Sie finden die private IP-Adresse auf der Seite Cloud SQL-Instanzen oder durch Ausführen des folgenden gcloud-Befehls:

gcloud sql instances list

Öffentliche IP-Adresse

So stellen Sie eine Verbindung über eine öffentliche IP-Adresse her:

1. Fügen Sie der Compute Engine-Instanz eine statische IPv4-Adresse hinzu, falls sie noch keine hat.

Verbindungen mit Compute Engine über IPv6 sind nicht möglich. Informationen zum Hinzufügen einer statischen IP-Adresse finden Sie unter Neue statische externe IP-Adresse reservieren in der Compute Engine-Dokumentation.

2. Autorisieren Sie die statische IP-Adresse der Compute Engine-Instanz als Netzwerk, das Verbindungen zur Cloud SQL-Instanz herstellen kann.

Weitere Informationen hierzu finden Sie unter Zugriff für öffentliche IP-Verbindungen konfigurieren.

3. Stellen Sie eine Cloud Shell-Terminalverbindung zu Ihrer Compute Engine-Instanz her.

Verwenden Sie abhängig vom Betriebssystem der Instanz die entsprechende Anleitung:

Wenn auf Ihrer Compute Engine-Instanz ein öffentliches RHEL- oder CentOS-Image ausgeführt wird, blockiert SELinux unter Umständen die Proxy-Verbindung. Wenn dies geschieht, müssen Sie die SELinux-Funktion so konfigurieren, dass sie die Verbindung zulässt.

Weitere Informationen über SELinux für RHEL finden Sie in der RHEL-Dokumentation. Weitere Informationen über SELinux für CentOS finden Sie in der CentOS-Dokumentation.

4. Installieren Sie den sqlcmd-Client auf der Compute Engine-Instanz, falls er noch nicht installiert ist.

Debian/Ubuntu

Für Debian/Ubuntu installieren Sie die entsprechenden SQL Server-Befehlszeilentools.

CentOS/RHEL

Für CentOS/RHEL installieren Sie die entsprechenden SQL Server-Befehlszeilentools.

openSUSE

Für openSUSE installieren Sie die entsprechenden SQL Server-Befehlszeilentools.

Andere Plattformen

Weitere Informationen finden Sie auf der Landingpage zur SQL Server-Installation und der SQL Server-Downloadseite.

5. Mit dem sqlcmd-Client verbinden.

sqlcmd -S CLOUD_SQL_PUBLIC_IP_ADDR -U USERNAME

Sie finden die öffentliche IP-Adresse auf der Seite Cloud SQL-Instanzen oder durch Ausführen des folgenden gcloud-Befehls:

gcloud sql instances list

Ein Beispiel für das Herstellen einer SSL-Verbindung finden Sie unter SSL-Verbindung herstellen.

6. Die sqlcmd-Eingabeaufforderung wird angezeigt.

Cloud SQL Auth-Proxy

So stellen Sie über Compute Engine eine Verbindung mit dem Cloud SQL Auth-Proxy her:

1. Cloud SQL Admin API aktivieren.

Enable the API

2. Erstellen Sie ein Dienstkonto.

  1. Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf:

    Zur Seite „Dienstkonten“

  2. Wählen Sie das Projekt aus, in dem sich die Cloud SQL-Instanz befindet.
  3. Klicken Sie auf Dienstkonto erstellen.
  4. Geben Sie im Feld Name des Dienstkontos einen Namen für das Dienstkonto ein.
  5. Ändern Sie die Dienstkonto-ID in einen eindeutigen, leicht erkennbaren Wert und klicken Sie dann auf Erstellen und fortfahren.
  6. Klicken Sie auf das Feld Rolle auswählen und wählen Sie eine der folgenden Rollen aus:
    • Cloud SQL > Cloud SQL-Client
    • Cloud SQL > Cloud SQL-Bearbeiter
    • Cloud SQL > Cloud SQL-Administrator
  7. Klicken Sie auf Fertig, um das Erstellen des Dienstkontos abzuschließen.
  8. Klicken Sie auf das Aktionsmenü für das neue Dienstkonto und wählen Sie Schlüssel verwalten aus.
  9. Klicken Sie auf das Drop-down-Menü Schlüssel hinzufügen und dann auf Neuen Schlüssel erstellen.
  10. Prüfen Sie, ob der Schlüsseltyp JSON ist, und klicken Sie dann auf Erstellen.

    Die Datei mit dem privaten Schlüssel wird auf Ihren Computer heruntergeladen. Sie können die Datei an einen anderen Speicherort verschieben. Bewahren Sie die Schlüsseldatei sicher auf.

Wenn sich die Compute Engine-Instanz in einem anderen Projekt als die Cloud SQL-Instanz befindet, stellen Sie sicher, dass das Dienstkonto der Compute Engine-Instanz in dem Projekt, in dem sich die Cloud SQL-Instanz befindet, über die entsprechenden Berechtigungen verfügt:

  1. Rufen Sie in der Google Cloud Console die Liste der Compute Engine-Instanzen auf.

    Zur Liste "Compute Engine-Instanzen"

  2. Falls erforderlich, wählen Sie das Projekt aus, das zur Compute Engine-Instanz gehört.
  3. Wählen Sie die Compute Engine-Instanz aus, um ihre Attribute zu sehen.
  4. Kopieren Sie in den Attributen der Compute Engine-Instanz den Namen des Dienstkontos.
  5. Wechseln Sie in der Google Cloud Console zur Seite IAM & Verwaltung > Projekte.

    Seite "IAM & Verwaltung" aufrufen

  6. Wählen Sie das Projekt aus, in dem sich die Cloud SQL-Instanz befindet.
  7. Suchen Sie nach dem Namen des Dienstkontos.
  8. Wenn das Dienstkonto bereits vorhanden ist und eine Rolle mit der Berechtigung cloudsql.instances.connect hat, können Sie mit Schritt 4 fortfahren.

    Die Rollen Cloud SQL Client, Cloud SQL Editor und Cloud SQL Admin sowie die Legacy-Projektrollen Editor und Owner haben alle die erforderliche Berechtigung.

  9. Falls nicht, fügen Sie das Dienstkonto hinzu. Klicken Sie dazu auf Hinzufügen.
  10. Geben Sie im Dialogfeld Hauptkonten hinzufügen den Namen des Dienstkontos an und wählen Sie eine Rolle mit der Berechtigung cloudsql.instances.connect aus. Sie können jede vordefinierte Cloud SQL-Rolle außer "Betrachter" verwenden.

    Alternativ können Sie die einfache Rolle „Bearbeiter“ verwenden. Wählen Sie dazu Projekt > Bearbeiter aus. Allerdings gewährt die Rolle „Bearbeiter“ umfassende Berechtigungen in Google Cloud.

    Wenn diese Rollen nicht angezeigt werden, kann es sein, dass Ihr Google Cloud-Nutzer nicht die Berechtigung resourcemanager.projects.setIamPolicy hat. Zum Prüfen Ihrer Berechtigungen rufen Sie in der Google Cloud Console die Seite "IAM" auf und suchen nach Ihrer Nutzer-ID.

  11. Klicken Sie auf Hinzufügen.

    Das Dienstkonto mit der angegebenen Rolle wird jetzt aufgeführt.

3. Stellen Sie eine Terminalverbindung zu Ihrer Compute Engine-Instanz her.

Verwenden Sie abhängig vom Betriebssystem der Instanz die entsprechende Anleitung:

Wenn auf Ihrer Compute Engine-Instanz ein öffentliches RHEL- oder CentOS-Image ausgeführt wird, blockiert SELinux unter Umständen die Proxy-Verbindung. Wenn dies geschieht, müssen Sie die SELinux-Funktion so konfigurieren, dass sie die Verbindung zulässt.

Weitere Informationen über SELinux für RHEL finden Sie in der RHEL-Dokumentation. Weitere Informationen über SELinux für CentOS finden Sie in der CentOS-Dokumentation.

4. Installieren Sie den sqlcmd-Client auf der Compute Engine-Instanz, falls er noch nicht installiert ist.

Debian/Ubuntu

Für Debian/Ubuntu installieren Sie die entsprechenden SQL Server-Befehlszeilentools.

CentOS/RHEL

Für CentOS/RHEL installieren Sie die entsprechenden SQL Server-Befehlszeilentools.

openSUSE

Für openSUSE installieren Sie die entsprechenden SQL Server-Befehlszeilentools.

Andere Plattformen

Weitere Informationen finden Sie auf der Landingpage zur SQL Server-Installation und der SQL Server-Downloadseite.

5. Installieren Sie den Cloud SQL Auth-Proxy auf der Compute Engine-Instanz.

Linux 64-Bit

  1. Laden Sie den Cloud SQL Auth-Proxy herunter:
    curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.14.1/cloud-sql-proxy.linux.amd64
  2. Machen Sie den Cloud SQL Auth-Proxy ausführbar:
    chmod +x cloud-sql-proxy

Linux 32-Bit

  1. Laden Sie den Cloud SQL Auth-Proxy herunter:
    curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.14.1/cloud-sql-proxy.linux.386
  2. Wenn der Befehl curl nicht gefunden wird, führen Sie sudo apt install curl aus und wiederholen Sie den Downloadbefehl.
  3. Machen Sie den Cloud SQL Auth-Proxy ausführbar:
    chmod +x cloud-sql-proxy

Windows 64-Bit

Klicken Sie mit der rechten Maustaste auf https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.14.1/cloud-sql-proxy.x64.exe und wählen Sie Link speichern unter aus, um den Cloud SQL Auth-Proxy herunterzuladen. Benennen Sie die Datei in cloud-sql-proxy.exe um.

Windows 32-Bit

Klicken Sie mit der rechten Maustaste auf https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.14.1/cloud-sql-proxy.x86.exe und wählen Sie Link speichern unter aus, um den Cloud SQL Auth-Proxy herunterzuladen. Benennen Sie die Datei in cloud-sql-proxy.exe um.

Docker-Image des Cloud SQL Auth-Proxys

Der Cloud SQL Auth-Proxy hat verschiedene Container-Images, z. B. distroless, alpine und buster. Das standardmäßige Cloud SQL Auth-Proxy-Container-Image verwendet distroless, das keine Shell enthält. Wenn Sie eine Shell oder verwandte Tools benötigen, laden Sie ein auf alpine oder buster basierendes Image herunter. Weitere Informationen finden Sie unter Container-Images von Cloud SQL Auth-Proxy.

Sie können das neueste Image mithilfe von Docker mit dem folgenden Befehl auf Ihren lokalen Computer übertragen:

docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.14.1

Andere Betriebssysteme

Für andere Betriebssysteme, die hier nicht aufgeführt sind, können Sie den Cloud SQL Auth-Proxy aus der Quelle kompilieren.

6. Starten Sie den Cloud SQL Auth-Proxy.

Sie können den Cloud SQL Auth-Proxy mit TCP-Sockets oder dem Cloud SQL Auth Proxy-Docker-Image starten. Das Cloud SQL Auth-Proxy-Binärprogramm stellt eine Verbindung zu einer oder mehreren Cloud SQL-Instanzen her, die in der Befehlszeile angegeben sind, und öffnet eine lokale Verbindung als TCP-Socket. Andere Anwendungen und Dienste, wie z. B. Anwendungscode und Datenbankverwaltungs-Clienttools, können über diese TCP-Socket-Verbindung eine Verbindung zu Cloud SQL-Instanzen herstellen.

TCP-Sockets

Bei TCP-Verbindungen beobachtet der Cloud SQL Auth-Proxy standardmäßig localhost(127.0.0.1). Wenn Sie also --port PORT_NUMBER für eine Instanz angeben, befindet sich die lokale Verbindung auf 127.0.0.1:PORT_NUMBER.

Alternativ können Sie eine andere Adresse für die lokale Verbindung angeben. So können Sie zum Beispiel den Cloud SQL-Auth-Proxy dazu bringen, die lokale Verbindung auf 0.0.0.0:1234 zu beobachten:

./cloud-sql-proxy --address 0.0.0.0 --port 1234 INSTANCE_CONNECTION_NAME
  1. Kopieren Sie Ihren INSTANCE_CONNECTION_NAME. Sie finden ihn in der Google Cloud Console auf der Seite Übersicht für Ihre Instanz oder über folgenden Befehl:

        gcloud sql instances describe INSTANCE_NAME --format='value(connectionName)'

    Beispiel: myproject:myregion:myinstance.

  2. Wenn für die Instanz sowohl eine öffentliche als auch eine private IP-Adresse konfiguriert ist und der Cloud SQL Auth-Proxy die private IP-Adresse verwenden soll, müssen Sie beim Starten des Cloud SQL Auth-Proxys folgende Option angeben:
    --private-ip
  3. Wenn Sie ein Dienstkonto zur Authentifizierung des Cloud SQL Auth-Proxys verwenden, notieren Sie den Speicherort der Datei mit dem privaten Schlüssel, die zusammen mit dem Dienstkonto erstellt wurde, auf Ihrem Clientcomputer.
  4. Starten Sie den Cloud SQL Auth-Proxy.

    Einige mögliche Strings zum Aufrufen des Cloud SQL Auth-Proxys:

    • Mit Cloud SDK-Authentifizierung:
      ./cloud-sql-proxy --port 1433 INSTANCE_CONNECTION_NAME
      Der angegebene Port darf nicht belegt sein (etwa durch einen lokalen Datenbankserver).
    • Mit einem Dienstkonto und unter expliziter Angabe des Namens der Instanzverbindung (empfohlen für Produktionsumgebungen):
      ./cloud-sql-proxy \
      --credentials-file PATH_TO_KEY_FILE INSTANCE_CONNECTION_NAME &

    Weitere Informationen über Cloud SQL Auth-Proxyoptionen finden Sie unter Authentifizierungsoptionen für Cloud SQL Auth-Proxy.

Docker

Verwenden Sie zum Ausführen des Cloud SQL Auth-Proxys in einem Docker-Container das Cloud SQL Auth-Proxy-Docker-Image, das in der Google Container Registry verfügbar ist.

Sie können den Cloud SQL Auth-Proxy entweder mit TCP-Sockets oder mit Unix-Sockets starten. Dafür werden die folgenden Befehle verwendet. Die Optionen verwenden einen INSTANCE_CONNECTION_NAME als Verbindungsstring, um eine Cloud SQL-Instanz zu identifizieren. Sie finden den INSTANCE_CONNECTION_NAME auf der Seite Übersicht Ihrer Instanz in der Google Cloud Console oder ermitteln ihn über folgenden Befehl:

gcloud sql instances describe INSTANCE_NAME
.

Beispiel: myproject:myregion:myinstance.

Je nach Ihrer Programmiersprache und Umgebung können Sie den Cloud SQL Auth-Proxy entweder mit TCP-Sockets oder mit Unix-Sockets starten. Allerdings werden Unix-Sockets nicht für Anwendungen unterstützt, die in der Programmiersprache Java oder für die Windows-Umgebung geschrieben sind.

TCP-Sockets verwenden

docker run -d \\
  -v PATH_TO_KEY_FILE:/path/to/service-account-key.json \\
  -p 127.0.0.1:1433:1433 \\
  gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.14.1 \\
  --address 0.0.0.0 --port 1433 \\
  --credentials-file /path/to/service-account-key.json INSTANCE_CONNECTION_NAME

Wenn Sie die von Ihrer Compute Engine-Instanz bereitgestellten Anmeldedaten verwenden, geben Sie den Parameter --credentials-file und die Zeile -v PATH_TO_KEY_FILE:/path/to/service-account-key.json nicht an.

Geben Sie in -p immer das Präfix 127.0.0.1 an, damit der Cloud SQL Auth-Proxy nicht außerhalb des lokalen Hosts bereitgestellt wird. Die Angabe "0.0.0.0" im Instanzparameter ist erforderlich, damit von außerhalb des Docker-Containers auf den Port zugegriffen werden kann.

Unix-Sockets verwenden

docker run -d -v /cloudsql:/cloudsql \\
  -v PATH_TO_KEY_FILE:/path/to/service-account-key.json \\
  gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.14.1 --unix-socket=/cloudsql \\
  --credentials-file /path/to/service-account-key.json INSTANCE_CONNECTION_NAME

Wenn Sie die von Ihrer Compute Engine-Instanz bereitgestellten Anmeldedaten verwenden, geben Sie den Parameter --credentials-file und die Zeile -v PATH_TO_KEY_FILE:/path/to/service-account-key.json nicht an.

Wenn Sie ein containeroptimiertes Image verwenden, ersetzen Sie /cloudsql durch ein beschreibbares Verzeichnis. Beispiel:

-v /mnt/stateful_partition/cloudsql:/cloudsql

Sie können mehrere durch Kommas getrennte Instanzen angeben. Außerdem haben Sie die Möglichkeit, mithilfe von Compute Engine-Metadaten dynamisch die Instanzen zu bestimmen, zu denen eine Verbindung hergestellt werden soll. Weitere Informationen zu Cloud SQL Auth-Proxy-Parametern.

7. sqlcmd-Sitzung starten

Der zu verwendende Verbindungsstring hängt davon ab, ob Sie den Cloud SQL Auth-Proxy mit einem TCP-Socket oder Docker gestartet haben.

TCP-Sockets

  1. Starten Sie den sqlcmd-Client:
    sqlcmd -S tcp:127.0.0.1,1433 -U USERNAME -P PASSWORD

    Wenn Sie die Verbindung mithilfe von TCP-Sockets herstellen, greifen Sie über 127.0.0.1 auf den Cloud SQL Auth-Proxy zu.

  2. Geben Sie das Passwort ein, wenn Sie dazu aufgefordert werden.
  3. Die sqlcmd-Eingabeaufforderung wird angezeigt.

Benötigen Sie Hilfe? Informationen zur Fehlerbehebung für den Proxy finden Sie unter Fehlerbehebung bei Cloud SQL Auth-Proxyverbindungen oder auf der Seite Cloud SQL-Support.

Nächste Schritte