Verbindung des MySQL-Clients von Compute Engine aus herstellen

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

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

Hinweis

Bevor Sie eine Verbindung zu Ihrer Cloud SQL-Instanz herstellen können, benötigen Sie einen Standard-Datenbanknutzer (root) auf der Instanz.

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 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 MySQL-Client auf der Compute Engine-Instanz, falls er noch nicht installiert ist.

Debian/Ubuntu

Sie installieren den MySQL-Client aus dem Paketmanager:

sudo apt-get update
sudo apt-get install mariadb-server-10.3

CentOS/RHEL

Sie installieren den MySQL-Client aus dem Paketmanager:

sudo yum install mysql

openSUSE

Sie installieren den MySQL-Client aus dem Paketmanager:

sudo zypper install mysql-server

Andere Plattformen

  1. Laden Sie MySQL Community Server für Ihre Plattform von der Downloadseite für MySQL Community Server herunter.
    Community Server enthält auch den MySQL-Client.
  2. Installieren Sie Community Server nach den Anweisungen auf der Downloadseite.

Weitere Informationen zur MySQL-Installation finden Sie im MySQL-Referenzhandbuch unter MySQL-Installation und -Upgrade.

4. Stellen Sie eine Verbindung mit dem MySQL-Client her.

mysql --host=[CLOUD_SQL_PRIVATE_IP_ADDR] --user=root --password

Ö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 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 MySQL-Client auf der Compute Engine-Instanz, falls er noch nicht installiert ist.

Debian/Ubuntu

Sie installieren den MySQL-Client aus dem Paketmanager:

sudo apt-get update
sudo apt-get install mariadb-server-10.3

CentOS/RHEL

Sie installieren den MySQL-Client aus dem Paketmanager:

sudo yum install mysql

openSUSE

Sie installieren den MySQL-Client aus dem Paketmanager:

sudo zypper install mysql-server

Andere Plattformen

  1. Laden Sie MySQL Community Server für Ihre Plattform von der Downloadseite für MySQL Community Server herunter.
    Community Server enthält auch den MySQL-Client.
  2. Installieren Sie Community Server nach den Anweisungen auf der Downloadseite.

Weitere Informationen zur MySQL-Installation finden Sie im MySQL-Referenzhandbuch unter MySQL-Installation und -Upgrade.

5 Stellen Sie eine Verbindung zum MySQL-Client her.

mysql --host=[CLOUD_SQL_PUBLIC_IP_ADDR] --user=root --password
Run the following gcloud command to find the CLOUD_SQL_PUBLIC_IP_ADDR:

gcloud sql instances list

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

6. Die MySQL-Eingabeaufforderung wird angezeigt.

7. Wenn Sie ungenutzte Verbindungen aufrechterhalten müssen, gehen Sie so vor:

Legen Sie das TCP Keepalive fest.

Weitere Informationen finden Sie in der Compute Engine-Dokumentation unter Kommunikation zwischen Ihren Instanzen und dem Internet.

Bei Instanzen ist das Keepalive für die Verbindungen automatisch aktiviert.

Cloud SQL Proxy

So stellen Sie eine Verbindung von Compute Engine über den Proxy her:

1. Cloud SQL Admin API aktivieren.

Aktivieren Sie die 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 in das Dialogfeld Dienstkonto erstellen einen aussagekräftigen Namen für das Dienstkonto ein.
  5. Wählen Sie unter Rolle eine der folgenden Rollen aus:
    • Cloud SQL > Cloud SQL-Client
    • Cloud SQL > Cloud SQL-Bearbeiter
    • Cloud SQL > Cloud SQL-Administrator
  6. Ändern Sie die Dienstkonto-ID in einen eindeutigen, erkennbaren Wert.
  7. Klicken Sie auf Neuen privaten Schlüssel bereitstellen und bestätigen Sie den Schlüsseltyp JSON.
  8. Klicken Sie 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.

    Weiter 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. Rufen Sie in der Google Cloud Console die Seite IAM & Verwaltung > Projekte auf.

    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 Mitglieder 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 Sie 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 MySQL-Client auf der Compute Engine-Instanz, falls er noch nicht installiert ist.

Debian/Ubuntu

Sie installieren den MySQL-Client aus dem Paketmanager:

sudo apt-get update
sudo apt-get install mariadb-server-10.3

CentOS/RHEL

Sie installieren den MySQL-Client aus dem Paketmanager:

sudo yum install mysql

openSUSE

Sie installieren den MySQL-Client aus dem Paketmanager:

sudo zypper install mysql-server

Andere Plattformen

  1. Laden Sie MySQL Community Server für Ihre Plattform von der Downloadseite für MySQL Community Server herunter.
    Community Server enthält auch den MySQL-Client.
  2. Installieren Sie Community Server nach den Anweisungen auf der Downloadseite.

Weitere Informationen zur MySQL-Installation finden Sie im MySQL-Referenzhandbuch unter MySQL-Installation und -Upgrade.

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

Linux 64-Bit

  1. Laden Sie den Proxy herunter:
    wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
    
  2. Machen Sie den Proxy ausführbar:
    chmod +x cloud_sql_proxy
    

Linux 32-Bit

  1. Laden Sie den Proxy herunter:
    wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.386 -O cloud_sql_proxy
    
  2. Machen Sie den Proxy ausführbar:
    chmod +x cloud_sql_proxy
    

Windows 64-Bit

Klicken Sie mit der rechten Maustaste auf https://dl.google.com/cloudsql/cloud_sql_proxy_x64.exe, wählen Sie Link speichern unter aus und laden Sie den Proxy herunter. Benennen Sie die Datei in cloud_sql_proxy.exe um.

Windows 32-Bit

Klicken Sie mit der rechten Maustaste auf https://dl.google.com/cloudsql/cloud_sql_proxy_x86.exe, wählen Sie Link speichern unter aus und laden Sie den Proxy herunter. Benennen Sie die Datei in cloud_sql_proxy.exe um.

Docker-Proxy-Image

Das Cloud SQL-Team verwaltet zur Vereinfachung mehrere Container-Images, die den Cloud SQL-Proxy für eine Verwendung durch unsere Kunden enthalten. Weitere Informationen zu diesen Images finden Sie im Cloud SQL-Proxy-Repository auf GitHub. Mit folgendem Befehl können Sie das neueste Image mithilfe von Docker auf Ihren lokalen Computer übertragen:
docker pull gcr.io/cloudsql-docker/gce-proxy:1.19.1

Andere Betriebssysteme

Bei anderen Betriebssystemen, die hier nicht aufgeführt sind, können Sie den Proxy aus der Quelle kompilieren.

6. Starten Sie den Proxy.

Je nach verwendeter Programmiersprache und Umgebung können Sie den Proxy entweder mit TCP-Sockets, mit Unix-Sockets oder mit dem Docker-Proxy-Image starten. Das 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- oder Unix-Socket. Andere Anwendungen und Dienste, z. B. Ihre Anwendungscode- oder Datenbankverwaltungs-Clienttools, können über diese TCP- oder Unix-Socket-Verbindungen eine Verbindung zu Cloud SQL-Instanzen herstellen.

TCP-Sockets

Bei TCP-Verbindungen erfolgt die Beobachtung durch den Proxy standardmäßig auf localhost (127.0.0.1). Wenn Sie also tcp: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 beobachtet der Proxy beispielsweise die lokale Verbindung auf 0.0.0.0:1234:

  ./cloud_sql_proxy -instances=INSTANCE_CONNECTION_NAME=tcp:0.0.0.0:1234
  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 den folgenden Befehl:

    gcloud sql instances describe INSTANCE_NAME

    Beispiel: myproject:myregion:myinstance.

  2. Wenn für die Instanz sowohl eine öffentliche als auch eine private IP konfiguriert ist und Sie möchten, dass der Proxy die private IP-Adresse verwendet, müssen Sie beim Starten des Proxys die folgende Option angeben:
    -ip_address_types=PRIVATE
  3. Wenn Sie ein Dienstkonto zur Authentifizierung des Proxys verwenden, notieren Sie den Speicherort der zusammen mit dem Dienstkonto erstellten Datei mit dem privaten Schlüssel auf Ihrem Clientcomputer.
  4. Starten Sie den Proxy.

    Im Folgenden sind einige mögliche Strings für den Proxyaufruf aufgeführt:

    • Mit Cloud SDK-Authentifizierung:
      ./cloud_sql_proxy -instances=INSTANCE_CONNECTION_NAME=tcp:3306
      
      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 -instances=INSTANCE_CONNECTION_NAM=tcp:3306 \
                        -credential_file=PATH_TO_KEY_FILE &
      

    Weitere Informationen zu Proxyoptionen finden Sie unter Authentifizierungsoptionen für den Cloud SQL-Proxy und Informationen zum Cloud SQL-Proxy.

Unix-Sockets

Der Cloud SQL-Proxy kann einen Unix-Socket beobachten. Dies ist ein POSIX-Standardmechanismus für die Verwendung eines Ordners zur Verwaltung der Kommunikation zwischen zwei Prozessen, die auf demselben Host ausgeführt werden. Vorteile der Verwendung von Unix-Sockets sind höhere Sicherheit und geringere Latenz. Sie können jedoch nicht von einem externen Computer aus auf einen Unix-Socket zugreifen.

Zum Erstellen und Verwenden eines Unix-Sockets muss das Zielverzeichnis vorhanden sein und sowohl der Proxy als auch die Anwendung müssen Lese- und Schreibzugriff darauf haben.

  1. Wenn Sie eine explizite Instanzspezifikation verwenden, kopieren Sie Ihren INSTANCE_CONNECTION_NAME. Sie finden ihn in der Google Cloud Console auf der Seite Übersicht für Ihre Instanz oder über den folgenden Befehl:

    gcloud sql instances describe INSTANCE_NAME

    Beispiel: myproject:myregion:myinstance.

  2. Erstellen Sie das Verzeichnis für die Proxy-Sockets:
    sudo mkdir /cloudsql; sudo chmod 777 /cloudsql
  3. Wenn Sie ein Dienstkonto zur Authentifizierung des Proxys verwenden, notieren Sie den Speicherort der Datei mit dem privaten Schlüssel, die zusammen mit dem Dienstkonto erstellt wurde, auf Ihrem Clientcomputer.
  4. Öffnen Sie ein neues Terminalfenster und starten Sie den Proxy.

    Einige mögliche Proxy-Aufrufstrings:

    • Mit einem Dienstkonto und unter expliziter Angabe des Namens der Instanzverbindung (empfohlen für Produktionsumgebungen):
      ./cloud_sql_proxy -dir=/cloudsql -instances=INSTANCE_CONNECTION_NAME
      -credential_file=PATH_TO_KEY_FILE &
    • Mit Cloud SDK-Authentifizierung und automatischer Instanzerkennung:
      ./cloud_sql_proxy -dir=/cloudsql &

    Am besten starten Sie den Proxy in seinem eigenen Terminal. So können Sie seine Ausgabe überwachen, ohne dass diese mit der Ausgabe anderer Programme vermischt wird.

    Weitere Informationen zu Proxyoptionen finden Sie unter Authentifizierungsoptionen für den Cloud SQL-Proxy und Informationen zum Cloud SQL-Proxy.

Docker-Proxy-Image

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

Mit den unten aufgeführten Befehlen können Sie den Proxy mit TCP-Sockets oder Unix-Sockets starten. 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 durch Ausführen des folgenden Befehls:

gcloud sql instances describe INSTANCE_NAME
.

Beispiel: myproject:myregion:myinstance.

Je nach Ihrer Programmiersprache und Umgebung können Sie den 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:/config \\
  -p 127.0.0.1:3306:3306 \\
  gcr.io/cloudsql-docker/gce-proxy:1.19.1 /cloud_sql_proxy \\
  -instances=INSTANCE_CONNECTION_NAME=tcp:0.0.0.0:3306 -credential_file=/config

Wenn Sie die von Ihrer Compute Engine-Instanz bereitgestellten Anmeldedaten verwenden, geben Sie den Parameter credential_file und die Zeile -v PATH_TO_KEY_FILE:/config nicht an.

Geben Sie in -p immer das Präfix 127.0.0.1 an, damit der 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:/config \\
  gcr.io/cloudsql-docker/gce-proxy:1.19.1 /cloud_sql_proxy -dir=/cloudsql \\
  -instances=INSTANCE_CONNECTION_NAME -credential_file=/config

Wenn Sie die von Ihrer Compute Engine-Instanz bereitgestellten Anmeldedaten verwenden, geben Sie den Parameter credential_file und die Zeile -v PATH_TO_KEY_FILE:/config 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. Proxy-Parameter.

7. Starten Sie die MySQL-Sitzung.

Der verwendete Verbindungsstring hängt davon ab, ob Sie den Proxy mit einem TCP-Socket, einem UNIX-Socket oder einem Docker gestartet haben.

TCP-Sockets

  1. Starten Sie den MySQL-Client:
    mysql -u USERNAME -p --host 127.0.0.1
    

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

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

Unix-Sockets verwenden

  1. Starten Sie den MySQL-Client:
    mysql -u USERNAME -p -S /cloudsql/INSTANCE_CONNECTION_NAME
    
  2. Geben Sie das Passwort ein.
  3. Die MySQL-Eingabeaufforderung wird angezeigt.

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

Weitere Informationen