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:
- Für Linux siehe Verbindung zu Linux-Instanzen.
- Für Windows siehe Verbindung zu Windows-Instanzen.
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:
- Für Linux siehe Verbindung zu Linux-Instanzen.
- Für Windows siehe Verbindung zu Windows-Instanzen.
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.
2. Erstellen Sie ein Dienstkonto.
- Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf:
- Wählen Sie das Projekt aus, in dem sich die Cloud SQL-Instanz befindet.
- Klicken Sie auf Dienstkonto erstellen.
- Geben Sie im Feld Name des Dienstkontos einen Namen für das Dienstkonto ein.
- Ändern Sie die Dienstkonto-ID in einen eindeutigen, leicht erkennbaren Wert und klicken Sie dann auf Erstellen und fortfahren.
-
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
- Klicken Sie auf Fertig, um das Erstellen des Dienstkontos abzuschließen.
- Klicken Sie auf das Aktionsmenü für das neue Dienstkonto und wählen Sie Schlüssel verwalten aus.
- Klicken Sie auf das Drop-down-Menü Schlüssel hinzufügen und dann auf Neuen Schlüssel erstellen.
-
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:
- Rufen Sie in der Google Cloud Console die Liste der Compute Engine-Instanzen auf.
- Falls erforderlich, wählen Sie das Projekt aus, das zur Compute Engine-Instanz gehört.
- Wählen Sie die Compute Engine-Instanz aus, um ihre Attribute zu sehen.
- Kopieren Sie in den Attributen der Compute Engine-Instanz den Namen des Dienstkontos.
- Wechseln Sie in der Google Cloud Console zur Seite IAM & Verwaltung > Projekte.
- Wählen Sie das Projekt aus, in dem sich die Cloud SQL-Instanz befindet.
- Suchen Sie nach dem Namen des Dienstkontos.
-
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
undCloud SQL Admin
sowie die Legacy-ProjektrollenEditor
undOwner
haben alle die erforderliche Berechtigung. - Falls nicht, fügen Sie das Dienstkonto hinzu. Klicken Sie dazu auf Hinzufügen.
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.- 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:
- Für Linux siehe Verbindung zu Linux-Instanzen.
- Für Windows siehe Verbindung zu Windows-Instanzen.
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
- 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
- Machen Sie den Cloud SQL Auth-Proxy ausführbar:
chmod +x cloud-sql-proxy
Linux 32-Bit
- 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
- Wenn der Befehl
curl
nicht gefunden wird, führen Siesudo apt install curl
aus und wiederholen Sie den Downloadbefehl. - 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 incloud-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 incloud-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
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.
- 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
- 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.
- Starten Sie den Cloud SQL Auth-Proxy.
Einige mögliche Strings zum Aufrufen des Cloud SQL Auth-Proxys:
- Mit Cloud SDK-Authentifizierung:
Der angegebene Port darf nicht belegt sein (etwa durch einen lokalen Datenbankserver)../cloud-sql-proxy --port 1433 INSTANCE_CONNECTION_NAME
- 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.
- Mit Cloud SDK-Authentifizierung:
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
- 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. - Geben Sie das Passwort ein, wenn Sie dazu aufgefordert werden.
- 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
- Hilfe zum Beheben von Verbindungsproblemen für den Cloud SQL Auth-Proxy erhalten
- Nutzer erstellen und Datenbanken erstellen.
- Mehr über private IP-Adressen erfahren
- Mehr über Optionen zum Verbinden Ihrer Anwendung mit Ihrer Instanz erfahren
- Supportoptionen