Verbindung vom SQL Server-Client mit dem Cloud SQL Auth-Proxy-Docker-Image herstellen

Auf dieser Seite wird gezeigt, wie Sie einen sqlcmd-Client von einem Clientcomputer, auf dem Linux ausgeführt wird, oder von einer Compute Engine-Linux-Instanz mit Ihrer Cloud SQL-Instanz verbinden und dafür das Cloud SQL Auth-Proxy-Docker-Image verwenden.

Hinweis

Folgende Voraussetzungen müssen erfüllt sein:

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Herstellen einer Verbindung zu einer Cloud SQL-Instanz mithilfe des Docker-Images des Cloud SQL Auth-Proxys benötigen:

  • So stellen Sie eine Verbindung über den Cloud SQL Auth-Proxy her: Cloud SQL-Client (roles/cloudsql.client)
  • Wenn Sie die IAM-Datenbankauthentifizierung verwenden: Cloud SQL-Instanznutzer (roles/cloudsql.instanceUser)

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

sqlcmd-Client über das Cloud SQL Auth-Proxy-Docker-Image verbinden

So stellen Sie eine Verbindung mithilfe des Cloud SQL Auth-Proxy-Docker-Image her:

  1. Aktivieren Sie die Cloud SQL Admin API, falls sie noch nicht aktiviert ist.

    Rollen, die zum Aktivieren von APIs erforderlich sind

    Zum Aktivieren von APIs benötigen Sie die Berechtigung serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Inhaberrolle (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollen

    API aktivieren

  2. Wenn Sie eine Compute Engine-Instanz verwenden, müssen Sie sie vorbereiten:
    1. Rufen Sie die Eigenschaften der Compute Engine-Instanz auf:
      gcloud compute instances describe [GCE_INSTANCE_NAME]
    2. Prüfen Sie das Dienstkonto und die Zugriffsbereiche, die für die Instanz konfiguriert sind:
      • Prüfen Sie, ob das an die VM angehängte Dienstkonto die vordefinierte IAM-Rolle (Identity and Access Management) Cloud SQL-Client (roles/cloudsql.client) hat, um eine Verbindung über den Cloud SQL Auth-Proxy oder die Cloud SQL Admin API herzustellen. Wenn Sie die IAM-Datenbankauthentifizierung verwenden, weisen Sie auch die Rolle Cloud SQL-Instanznutzer (roles/cloudsql.instanceUser) zu. Weitere Informationen zu vordefinierten Rollen finden Sie unter Erforderliche Rollen.
      • Achten Sie darauf, dass der VM-Zugriffsbereich auf cloud-platform (https://www.googleapis.com/auth/cloud-platform oder Uneingeschränkten Zugriff auf alle Cloud APIs zulassen in der Google Cloud -Console) festgelegt ist. Zugriffsbereiche sind eine Legacy-Methode zum Festlegen der Autorisierung für eine VM und legen nur den maximalen OAuth-Autorisierungsbereich für Anfragen fest. Verwalten Sie die Zugriffssteuerung über vordefinierte IAM-Rollen anstelle von Zugriffsbereichen.

      Wenn Ihre Compute Engine-Instanz nicht die erforderlichen Dienstkontorollen oder den erforderlichen Zugriffsbereich hat, können Sie die Instanz aktualisieren. Weitere Informationen zum Ändern des Dienstkontos und der Zugriffsbereiche auf einer VM finden Sie in der Compute Engine-Dokumentation unter Angehängtes Dienstkonto ändern.

    3. Stellen Sie eine Terminalverbindung zur Instanz her. Folgen Sie dazu der Anleitung unter Mit Linux-Instanzen verbinden.
  3. Installieren Sie den sqlcmd-Client auf der Compute Engine-Instanz oder auf dem Clientcomputer, wenn dieser 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. Installieren Sie gegebenenfalls den Docker-Client:
    curl https://get.docker.com | sh
    sudo usermod -aG docker $USER

    Wenn Sie eine containeroptimierte Compute Engine-Instanz verwenden, ist dort der Docker-Client bereits installiert.

  5. Installieren Sie das Cloud SQL Auth-Proxy-Docker-Image aus der Google Container Registry.
    docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.27.0
  6. Wenn Sie das Cloud SQL Auth-Proxy-Docker-Image auf einem lokalen Computer (nicht auf einer Compute Engine-Instanz) ausführen oder wenn das mit Ihrer Compute Engine-Instanz verknüpfte Dienstkonto nicht die erforderlichen IAM-Rollen und den erforderlichen Zugriffsbereich hat, erstellen Sie ein Google Cloud -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 Sie den Cloud SQL Auth-Proxy starten, geben Sie den Pfad zur Schlüsseldatei als „PATH_TO_KEY_FILE“ an.

  7. Rufen Sie in der Google Cloud Console die Seite „Cloud SQL-Instanzen“ auf.

    Zu „Cloud SQL-Instanzen“

  8. Wählen Sie die Instanz aus, um ihre Seite Instanzdetails zu öffnen, und kopieren Sie den Namen der Instanzverbindung.

    Beispiel: myproject:us-central1:myinstance.

  9. Starten Sie den Cloud SQL Auth-Proxy.

    TCP-Sockets

    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.27.0
    --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. Das Flag --address 0.0.0.0 ist erforderlich, damit von außerhalb des Docker-Containers auf den Port zugegriffen werden kann.

  10. Starten Sie den Client:

    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.

Docker-Image des Cloud SQL Auth-Proxys aktualisieren

Das Docker-Image des Cloud SQL Auth-Proxys basiert auf einer bestimmten Version des Cloud SQL Auth-Proxys. Wenn eine neue Version des Cloud SQL Auth-Proxys verfügbar ist, rufen Sie die neue Version des zugehörigen Docker-Image ab, damit Ihre Umgebung auf dem neuesten Stand ist. Die aktuelle Version des Cloud SQL Auth-Proxys finden Sie auf der GitHub-Seite mit Cloud SQL Auth-Proxyversionen.

Nächste Schritte