Nutzer mit integrierter Authentifizierung verwalten

Auf dieser Seite wird beschrieben, wie Sie die integrierte Authentifizierung von Cloud SQL aktivieren und verwenden.

Eine Übersicht finden Sie unter Integrierte Datenbankauthentifizierung mit Cloud SQL.

Vor dem Erstellen von Nutzern

  1. Cloud SQL-Instanz erstellen Weitere Informationen finden Sie unter Instanzen erstellen.
  2. Aktivieren Sie Passwortrichtlinien für die Instanz. Weitere Informationen finden Sie unter Passwortrichtlinien für Instanzen.
  3. Wenn Sie den administrativen Client Ihrer Datenbank für die Nutzerverwaltung verwenden möchten, gehen Sie so vor:

    1. Verbinden Sie den Client mit Ihrer Instanz. Siehe Verbindungsoptionen für externe Anwendungen.

    2. Konfigurieren Sie den Standardnutzer auf der Instanz. Legen Sie dazu das Passwort fest. Weitere Informationen finden Sie unter Passwort für das Standardnutzerkonto festlegen.

Passwort für das Standardnutzerkonto festlegen

Wenn Sie eine neue Cloud SQL-Instanz erstellen, müssen Sie ein Passwort für das Standardnutzerkonto festlegen, bevor Sie eine Verbindung zur Instanz herstellen können.

Bei Cloud SQL for MySQL ist root@% der Standardnutzer. Dies bedeutet einen Datenbanknutzer mit dem Nutzernamen root, der eine Verbindung von jedem Host (@%) aus herstellen kann.

Console

  1. Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.

    Cloud SQL-Instanzen aufrufen

  2. Klicken Sie auf den Instanznamen, um die Seite Übersicht einer Instanz zu öffnen.
  3. Wählen Sie im SQL-Navigationsmenü die Option Nutzer aus.
  4. Suchen Sie den Nutzer root und wählen Sie dann im Dreipunkt-Menü Dreipunkt-Symbol die Option Passwort ändern aus.

    Beachten Sie die aufgelisteten Anforderungen für das Passwort, die aus der für die Instanz gültigen Passwortrichtlinie abgeleitet wurden.

  5. Geben Sie ein starkes Passwort ein, das Sie sich gut merken können, und klicken Sie auf OK.

gcloud

Verwenden Sie den Befehl gcloud sql users set-password, um das Passwort für den Standardnutzer festzulegen.

Ersetzen Sie INSTANCE_NAME durch den Namen der Instanz, bevor Sie den Befehl ausführen.

gcloud sql users set-password root \
--host=% \
--instance=INSTANCE_NAME \
--prompt-for-password

REST Version 1

Verwenden Sie eine PUT-Anfrage mit der Methode users:update, um das Passwort für das Standardnutzerkonto zu aktualisieren.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • project-id: Ihre Projekt-ID
  • instance-id: die gewünschte Instanz-ID
  • password: das Passwort für den Nutzer

HTTP-Methode und URL:

PUT https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users?name=root&host=%25

JSON-Text anfordern:

{
  "name": "root",
  "password": "password"
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "status": "DONE",
  "user": "user@example.com",
  "insertTime": "2020-02-07T22:38:41.217Z",
  "startTime": "2020-02-07T22:38:41.217Z",
  "endTime": "2020-02-07T22:38:44.801Z",
  "operationType": "UPDATE_USER",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

REST v1beta4

Verwenden Sie eine PUT-Anfrage mit der Methode users:update, um das Passwort für das Standardnutzerkonto zu aktualisieren.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • project-id: Ihre Projekt-ID
  • instance-id: die gewünschte Instanz-ID
  • password: das Passwort für den Nutzer

HTTP-Methode und URL:

PUT https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users?name=root&host=%25

JSON-Text anfordern:

{
  "name": "root",
  "password": "password"
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "DONE",
  "user": "user@example.com",
  "insertTime": "2020-02-07T22:38:41.217Z",
  "startTime": "2020-02-07T22:38:41.217Z",
  "endTime": "2020-02-07T22:38:44.801Z",
  "operationType": "UPDATE_USER",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

Nutzer erstellen

Nachdem Sie das Standardnutzerkonto eingerichtet haben, können Sie weitere Nutzer erstellen.

Console

  1. Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.

    Cloud SQL-Instanzen aufrufen

  2. Klicken Sie auf den Instanznamen, um die Seite Übersicht einer Instanz zu öffnen.
  3. Wählen Sie im SQL-Navigationsmenü die Option Nutzer aus.
  4. Klicken Sie auf Nutzerkonto hinzufügen.

    Auf der Seite Nutzerkonto zur Instanz instance_name hinzufügen können Sie auswählen, ob sich der Nutzer mit der integrierten Datenbankmethode (Nutzername und Passwort) oder als IAM-Nutzer authentifizieren soll.

  5. Wählen Sie Integrierte Authentifizierung (Standardeinstellung) aus und fügen Sie die folgenden Informationen hinzu:
    • Nutzername
    • Optional. Passwort Geben Sie ein starkes Passwort ein, das Sie sich gut merken können.
    • Optional. Richtlinie für Nutzerpasswort.
    • Die Standardeinstellung im Abschnitt Hostnamen lautet Beliebigen Host zulassen. Das bedeutet, dass der Nutzer von jeder IP-Adresse aus eine Verbindung herstellen kann. Optional können Sie Host anhand von IP-Adresse oder Adressbereich einschränken auswählen und im Abschnitt Host eine IP-Adresse oder einen Adressbereich eingeben. Der Nutzer kann dann nur von der oder den angegebenen IP-Adresse(n) aus eine Verbindung herstellen.
  6. Klicken Sie auf Hinzufügen.

Nutzer, die auf Instanzen mit MySQL 8.0 und der Authentifizierungsmethode von Cloud SQL erstellt werden, erhalten automatisch die Rolle cloudsqlsuperuser und haben die folgenden mit dieser Rolle verbundenen Berechtigungen: CREATEROLE, CREATEDB und LOGIN.

Nutzer, die auf Instanzen mit MySQL 5.7 und der Authentifizierungsmethode von Cloud SQL erstellt werden, erhalten automatisch alle Berechtigungen außer FILE und SUPER. Wenn Sie die Berechtigungen für diese Nutzer ändern müssen, verwenden Sie den Befehl GRANT oder REVOKE im mysql-Client.

gcloud

Verwenden Sie zum Erstellen eines Nutzers den Befehl gcloud sql users create.

Ersetzen Sie Folgendes:

  • USER_NAME: Der Nutzername.
  • HOST: Der Hostname des Nutzers als spezifische IP-Adresse, Adressbereich oder beliebiger Host (%).
  • INSTANCE_NAME: Name der Instanz
  • PASSWORD: Das Passwort für den Nutzer.
gcloud sql users create USER_NAME \
--host=HOST \
--instance=INSTANCE_NAME \
--password=PASSWORD

Nutzer, die auf Instanzen mit MySQL 8.0 und der Authentifizierungsmethode von Cloud SQL erstellt werden, erhalten automatisch die Rolle cloudsqlsuperuser und haben die folgenden mit dieser Rolle verbundenen Berechtigungen: CREATEROLE, CREATEDB und LOGIN.

Nutzer, die auf Instanzen mit MySQL 5.7 und der Authentifizierungsmethode von Cloud SQL erstellt werden, erhalten automatisch alle Berechtigungen außer FILE und SUPER. Wenn Sie die Berechtigungen für diese Nutzer ändern müssen, verwenden Sie den Befehl GRANT oder REVOKE im mysql-Client.

Für Cloud SQL gelten dieselben Längenbeschränkungen für Nutzernamen wie für lokales MySQL; 32 Zeichen für MySQL 8.0, 16 Zeichen für frühere Versionen.

Wenn Sie einen Nutzer erstellen, können Sie Parameter für die Passwortrichtlinie für Nutzer hinzufügen.

Terraform

Verwenden Sie zum Erstellen eines Nutzers eine Terraform-Ressource.

resource "random_password" "pwd" {
  length  = 16
  special = false
}

resource "google_sql_user" "user" {
  name     = "user"
  instance = google_sql_database_instance.instance.name
  password = random_password.pwd.result
}

Änderungen anwenden

Führen Sie die Schritte in den folgenden Abschnitten aus, um Ihre Terraform-Konfiguration auf ein Google Cloud-Projekt anzuwenden.

Cloud Shell vorbereiten

  1. Rufen Sie Cloud Shell auf.
  2. Legen Sie das Google Cloud-Standardprojekt fest, auf das Sie Ihre Terraform-Konfigurationen anwenden möchten.

    Sie müssen diesen Befehl nur einmal pro Projekt und in jedem beliebigen Verzeichnis ausführen.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Umgebungsvariablen werden überschrieben, wenn Sie in der Terraform-Konfigurationsdatei explizite Werte festlegen.

Verzeichnis vorbereiten

Jede Terraform-Konfigurationsdatei muss ein eigenes Verzeichnis haben (auch als Stammmodul bezeichnet).

  1. Erstellen Sie in Cloud Shell ein Verzeichnis und eine neue Datei in diesem Verzeichnis. Der Dateiname muss die Erweiterung .tf haben, z. B. main.tf. In dieser Anleitung wird die Datei als main.tf bezeichnet.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Wenn Sie einer Anleitung folgen, können Sie den Beispielcode in jedem Abschnitt oder Schritt kopieren.

    Kopieren Sie den Beispielcode in das neu erstellte main.tf.

    Kopieren Sie optional den Code aus GitHub. Dies wird empfohlen, wenn das Terraform-Snippet Teil einer End-to-End-Lösung ist.

  3. Prüfen und ändern Sie die Beispielparameter, die auf Ihre Umgebung angewendet werden sollen.
  4. Speichern Sie die Änderungen.
  5. Initialisieren Sie Terraform. Dies ist nur einmal für jedes Verzeichnis erforderlich.
    terraform init

    Fügen Sie optional die Option -upgrade ein, um die neueste Google-Anbieterversion zu verwenden:

    terraform init -upgrade

Änderungen anwenden

  1. Prüfen Sie die Konfiguration und prüfen Sie, ob die Ressourcen, die Terraform erstellen oder aktualisieren wird, Ihren Erwartungen entsprechen:
    terraform plan

    Korrigieren Sie die Konfiguration nach Bedarf.

  2. Wenden Sie die Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie yes an der Eingabeaufforderung ein:
    terraform apply

    Warten Sie, bis Terraform die Meldung „Apply complete“ anzeigt.

  3. Öffnen Sie Ihr Google Cloud-Projekt, um die Ergebnisse aufzurufen. Rufen Sie in der Google Cloud Console Ihre Ressourcen in der Benutzeroberfläche auf, um sicherzustellen, dass Terraform sie erstellt oder aktualisiert hat.

Änderungen löschen

So löschen Sie das Projekt:

  1. Um den Löschschutz zu deaktivieren, setzen Sie in der Terraform-Konfigurationsdatei das Argument deletion_protection auf false.
    deletion_protection =  "false"
  2. Wenden Sie die aktualisierte Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie yes an der Eingabeaufforderung ein:
    terraform apply
  1. Entfernen Sie Ressourcen, die zuvor mit Ihrer Terraform-Konfiguration angewendet wurden, indem Sie den folgenden Befehl ausführen und yes an der Eingabeaufforderung eingeben:

    terraform destroy

REST Version 1

Verwenden Sie zum Erstellen eines Nutzers eine POST-Anfrage mit der Methode users:insert.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • project-id: Ihre Projekt-ID
  • instance-id: die gewünschte Instanz-ID
  • user-id: die ID des Nutzers
  • password: das Passwort für den Nutzer

HTTP-Methode und URL:

POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users

JSON-Text anfordern:

{
  "name": "user-id",
  "password": "password"
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "status": "DONE",
  "user": "user@example.com",
  "insertTime": "2020-02-07T22:44:16.656Z",
  "startTime": "2020-02-07T22:44:16.686Z",
  "endTime": "2020-02-07T22:44:20.437Z",
  "operationType": "CREATE_USER",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

Nutzer, die auf Instanzen mit MySQL 8.0 und der Authentifizierungsmethode von Cloud SQL erstellt werden, erhalten automatisch die Rolle cloudsqlsuperuser und haben die folgenden mit dieser Rolle verbundenen Berechtigungen: CREATEROLE, CREATEDB und LOGIN.

Nutzer, die auf Instanzen mit MySQL 5.7 und der Authentifizierungsmethode von Cloud SQL erstellt werden, erhalten automatisch alle Berechtigungen außer FILE und SUPER. Wenn Sie die Berechtigungen für diese Nutzer ändern müssen, verwenden Sie den Befehl GRANT oder REVOKE im mysql-Client.

Für Cloud SQL gelten dieselben Längenbeschränkungen für Nutzernamen wie für lokales MySQL; 32 Zeichen für MySQL 8.0, 16 Zeichen für frühere Versionen.

Wenn Sie einen Nutzer erstellen, können Sie Parameter für die Passwortrichtlinie für Nutzer hinzufügen.

REST v1beta4

Verwenden Sie zum Erstellen eines Nutzers eine POST-Anfrage mit der Methode users:insert.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • project-id: Ihre Projekt-ID
  • instance-id: die gewünschte Instanz-ID
  • user-id: die ID des Nutzers
  • password: das Passwort für den Nutzer

HTTP-Methode und URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users

JSON-Text anfordern:

{
  "name": "user-id",
  "password": "password"
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "DONE",
  "user": "user@example.com",
  "insertTime": "2020-02-07T22:44:16.656Z",
  "startTime": "2020-02-07T22:44:16.686Z",
  "endTime": "2020-02-07T22:44:20.437Z",
  "operationType": "CREATE_USER",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

Nutzer, die auf Instanzen mit MySQL 8.0 und der Authentifizierungsmethode von Cloud SQL erstellt werden, erhalten automatisch die Rolle cloudsqlsuperuser und haben die folgenden mit dieser Rolle verbundenen Berechtigungen: CREATEROLE, CREATEDB und LOGIN.

Nutzer, die auf Instanzen mit MySQL 5.7 und der Authentifizierungsmethode von Cloud SQL erstellt werden, erhalten automatisch alle Berechtigungen außer FILE und SUPER. Wenn Sie die Berechtigungen für diese Nutzer ändern müssen, verwenden Sie den Befehl GRANT oder REVOKE im mysql-Client.

Für Cloud SQL gelten dieselben Längenbeschränkungen für Nutzernamen wie für lokales MySQL; 32 Zeichen für MySQL 8.0, 16 Zeichen für frühere Versionen.

Wenn Sie einen Nutzer erstellen, können Sie Parameter für die Passwortrichtlinie für Nutzer hinzufügen.

MYSQL-Client

  1. Verwenden Sie zum Erstellen eines Nutzers an der mysql-Eingabeaufforderung die folgende Anweisung CREATE USER:
      CREATE USER 'USER_NAME'@'%'
         IDENTIFIED BY 'PASSWORD';
      

    Fügen Sie optional die Parameter für die Nutzerpasswortrichtlinie hinzu.

  2. Sie können anhand der Nutzertabelle prüfen, ob der Nutzer erstellt wurde:
    SELECT user, host FROM mysql.user;
    
    Bei Instanzen der zweiten Generation wird das Ergebnis wie in diesem Beispiel ausgegeben:
    +----------+-----------+
    | user     | host      |
    +----------+-----------+
    | root     | %         |
    | newuser  | %         |
    +----------+-----------+
    1 row in set (0.01 sec)
    
  3. Weisen Sie dem Nutzer Berechtigungen mit der Anweisung GRANT zu. Weitere Informationen finden Sie unter Von MySQL gewährte Berechtigungen.
  4. Leeren Sie die Tabelle mysql.user, damit die Änderung beibehalten wird:
      FLUSH TABLES mysql.user;
    

Richtlinie für Nutzerpasswort festlegen

Passwortrichtlinien lassen sich mit dem integrierten Authentifizierungstyp verwenden.

Console

  1. Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.

    Cloud SQL-Instanzen aufrufen

  2. Klicken Sie auf den Instanznamen, um die Seite Übersicht einer Instanz zu öffnen.
  3. Wählen Sie im SQL-Navigationsmenü die Option Nutzer aus.
  4. Klicken Sie für den Nutzer, dessen Richtlinie Sie ändern möchten, auf Dreipunkt-Symbol.
  5. Wählen Sie Passwortrichtlinie bearbeiten aus.
  6. Wählen Sie im Bereich Passwortrichtlinie eine oder mehrere der folgenden Optionen aus:
    • Passwort läuft ab: Gibt die Anzahl der Tage an, nach denen das Passwort abläuft und der Nutzer ein neues erstellen muss.
    • Sperren nach fehlgeschlagenen Versuchen: Gibt an, wie oft ein Nutzer versuchen kann, ein falsches Passwort einzugeben, bevor das Konto gesperrt wird.

      Wird nur für Cloud SQL for MySQL 8.0 unterstützt.

    • Aktuelles Passwort verlangen, wenn Passwort geändert wird: Nutzer müssen ihr vorhandenes Passwort eingeben, wenn sie es ändern möchten.

gcloud

Zum Festlegen der Nutzerpasswortrichtlinie verwenden Sie den Befehl gcloud sql users set-password-policy.

Mit der --password-policy-enable-password-verification können Sie festlegen, dass Nutzer ihr bestehendes Passwort eingeben müssen, wenn sie versuchen, das Passwort zu ändern. Zum Deaktivieren dieses Parameters verwenden Sie --no-password-policy-enable-password-verification.

Ersetzen Sie Folgendes:

  • USER_NAME: Der Nutzername.
  • INSTANCE_NAME: Name der Instanz
  • HOST: Der Hostname des Nutzers als spezifische IP-Adresse, Adressbereich oder beliebiger Host (%).
  • PASSWORD_POLICY_ALLOWED_FAILED_ATTEMPTS: Optional: Die Anzahl, wie oft ein Nutzer das Passwort falsch eingeben kann, bevor das Konto gesperrt wird. Verwenden Sie --password-policy-enable-failed-attempts-check zum Aktivieren und --no-password-policy-enable-failed-attempts-check zum Deaktivieren der Prüfung.
  • PASSWORD_POLICY_PASSWORD_EXPIRATION_DURATION (optional): Gibt die Anzahl der Tage an, nach denen das Passwort abläuft und der Nutzer ein neues erstellen muss.
gcloud sql users set-password-policy USER_NAME \
--instance=INSTANCE_NAME \
--host=HOST \
--password-policy-enable-failed-attempts-check \
--password-policy-allowed-failed-attempts=PASSWORD_POLICY_ALLOWED_FAILED_ATTEMPTS \
--password-policy-password-expiration-duration=PASSWORD_POLICY_PASSWORD_EXPIRATION_DURATION \
--password-policy-enable-password-verification

Verwenden Sie den Parameter --clear-password-policy, um eine Passwortrichtlinie für Nutzer zu entfernen.

gcloud sql users set-password-policy USER_NAME \
--instance=INSTANCE_NAME \
--host=HOST \
--clear-password-policy

Informationen über die Passwortrichtlinie für Nutzer finden Sie unter Nutzer auflisten.

REST Version 1

Verwenden Sie eine PUT-Anfrage mit der Methode users:update, um eine Richtlinie für das Nutzerpasswort festzulegen.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Ihre Projekt-ID.
  • INSTANCE_ID: die Instanz-ID
  • USER_ID: die ID des Nutzers
  • PASSWORD: Passwort des Nutzers
  • FAILED_ATTEMPTS_CHECK: Setzen Sie diese Option auf true, um die Anzahl der fehlgeschlagenen Anmeldeversuche zu prüfen, nach denen das Konto gesperrt wird.
  • NUMBER_OF_ATTEMPTS: die Anzahl der fehlgeschlagenen Anmeldeversuche, nach denen das Konto gesperrt wird.
  • PASSWORD_EXPIRATION_DURATION: die Anzahl der Tage, nach denen das Passwort abläuft und der Nutzer ein neues erstellen muss.
  • VERIFY_PASSWORD: Legen Sie true fest, damit Nutzer bei der Änderung des Passworts ihr vorhandenes Passwort eingeben müssen.

HTTP-Methode und URL:

PUT https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users?name=USER_ID

JSON-Text anfordern:

{
  "name": "USER_ID",
  "password": "PASSWORD",
  "data":
  {
    "passwordValidationUserPolicy" : {
      {
        "enableFailedAttemptsCheck" : "FAILED_ATTEMPTS_CHECK",
        "allowedFailedAttempts" : "NUMBER_OF_ATTEMPTS",
        "passwordExpirationDuration" : "PASSWORD_EXPIRATION_DURATION",
        "enablePasswordVerification" : "VERIFY_PASSWORD"
      }
    },
  }
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten in etwa folgende JSON-Antwort erhalten:

Informationen über die Passwortrichtlinie für Nutzer finden Sie unter Nutzer auflisten.

REST v1beta4

Verwenden Sie eine PUT-Anfrage mit der Methode users:update, um eine Richtlinie für das Nutzerpasswort festzulegen.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Ihre Projekt-ID.
  • INSTANCE_ID: die Instanz-ID
  • USER_ID: die ID des Nutzers
  • PASSWORD: Passwort des Nutzers
  • FAILED_ATTEMPTS_CHECK: Setzen Sie diese Option auf true, um die Anzahl der fehlgeschlagenen Anmeldeversuche zu prüfen, nach denen das Konto gesperrt wird.
  • NUMBER_OF_ATTEMPTS: die Anzahl der fehlgeschlagenen Anmeldeversuche, nach denen das Konto gesperrt wird.
  • PASSWORD_EXPIRATION_DURATION: die Anzahl der Tage, nach denen das Passwort abläuft und der Nutzer ein neues erstellen muss.
  • VERIFY_PASSWORD: Legen Sie true fest, damit Nutzer bei der Änderung des Passworts ihr vorhandenes Passwort eingeben müssen.

HTTP-Methode und URL:

PUT https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users?name=USER_ID

JSON-Text anfordern:

{
  "name": "USER_ID",
  "password": "PASSWORD",
  "data":
  {
    "passwordValidationUserPolicy" : {
      {
        "enableFailedAttemptsCheck" : "FAILED_ATTEMPTS_CHECK",
        "allowedFailedAttempts" : "NUMBER_OF_ATTEMPTS",
        "passwordExpirationDuration" : "PASSWORD_EXPIRATION_DURATION",
        "enablePasswordVerification" : "VERIFY_PASSWORD"
      }
    },
  }
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten in etwa folgende JSON-Antwort erhalten:

Informationen über die Passwortrichtlinie für Nutzer finden Sie unter Nutzer auflisten.

MYSQL-Client

Verwenden Sie bei der Eingabeaufforderung mysql die folgende ALTER USER-Anweisung, um eine Nutzerpasswortrichtlinie festzulegen:

ALTER USER USER_NAME
    FAILED_LOGIN_ATTEMPTS ALLOWED_FAILED_ATTEMPTS
    PASSWORD EXPIRE INTERVAL PASSWORD_EXPIRATION_DURATION DAY
    PASSWORD REQUIRE CURRENT;

Ersetzen Sie Folgendes:

  • USER_NAME: Der Nutzername.
  • ALLOWED_FAILED_ATTEMPTS: Optional: Die Anzahl, wie oft ein Nutzer das Passwort falsch eingeben kann, bevor das Konto gesperrt wird.
  • PASSWORD_EXPIRATION_DURATION (optional): Gibt die Anzahl der Tage an, nach denen das Passwort abläuft und der Nutzer ein neues erstellen muss.

Mit der Option PASSWORD REQUIRE CURRENT können Sie festlegen, dass Nutzer ihr bestehendes Passwort eingeben müssen, wenn sie versuchen, das Passwort zu ändern.

Informationen über die Passwortrichtlinie für Nutzer finden Sie unter Nutzer auflisten.

Nutzer auflisten

Console

  1. Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.

    Cloud SQL-Instanzen aufrufen

  2. Klicken Sie auf den Instanznamen, um die Seite Übersicht einer Instanz zu öffnen.
  3. Wählen Sie im SQL-Navigationsmenü die Option Nutzer aus.

    Die Liste enthält die Typen User name, Host name und Authentication für jeden Nutzer.

    Für den integrierten Authentifizierungstyp wird außerdem Password status angezeigt.

gcloud

Verwenden Sie den Befehl gcloud sql users list, um die Nutzer für diese Instanz aufzulisten:

gcloud sql users list \
--instance=INSTANCE_NAME

Der Befehl gibt für jeden Nutzer Name, Host und die Authentifizierung-Type zurück.

Darüber hinaus werden für den integrierten Authentifizierungstyp die Einstellungen für die Passwortrichtlinie und der Status zurückgegeben. Beispiel:

    NAME    HOST    TYPE        PASSWORD_POLICY
    user1           BUILT_IN    {'allowedFailedAttempts': 2,
                                 'enableFailedAttemptsCheck': True,
                                 'passwordExpirationDuration': '7d',
                                 'status': {
                                   'locked': True,
                                   'passwordExpirationTime': '2022-07-01T19:53:45.822742904Z'
                                 }
                                }
   

REST Version 1

Verwenden Sie zum Auflisten der für eine Instanz definierten Nutzer eine GET-Anfrage mit der Methode users:list.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • project-id: Ihre Projekt-ID
  • instance-id: die gewünschte Instanz-ID

HTTP-Methode und URL:

GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "kind": "sql#usersList",
  "items": [
    {
      "kind": "sql#user",
      "etag": "--redacted--",
      "name": "sqlserver",
      "host": "",
      "instance": "instance-id",
      "project": "project-id",
      "sqlserverUserDetails": {
        "serverRoles": [
          "CustomerDbRootRole"
        ]
      }
    },
    {
      "kind": "sql#user",
      "etag": "--redacted--",
      "name": "user-id-1",
      "host": "",
      "instance": "instance-id",
      "project": "project-id",
      "sqlserverUserDetails": {
        "serverRoles": [
          "CustomerDbRootRole"
        ]
      }
    },
    {
      "kind": "sql#user",
      "etag": "--redacted--",
      "name": "user-id-2",
      "host": "",
      "instance": "instance-id",
      "project": "project-id",
      "sqlserverUserDetails": {
        "serverRoles": [
          "CustomerDbRootRole"
        ]
      }
    },
    {
      ...
    },
    {
      ...
    }
  ]
}

Wenn eine Passwortrichtlinie für Nutzer festgelegt wurde, enthält der Abschnitt items der Antwort einen passwordPolicy-Abschnitt. Das folgende Codebeispiel zeigt den Abschnitt passwordPolicy.

  {
  ...
  "passwordValidationUserPolicy" : {
    {
      "enableFailedAttemptsCheck" : true,
      "allowedFailedAttempts" : 8,
      "passwordExpirationDuration" : "7d",
      "enablePasswordVerification" : true
    }
  },
  ...
}
  

REST v1beta4

Verwenden Sie zum Auflisten der für eine Instanz definierten Nutzer eine GET-Anfrage mit der Methode users:list.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • project-id: Ihre Projekt-ID
  • instance-id: die gewünschte Instanz-ID

HTTP-Methode und URL:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "kind": "sql#usersList",
  "items": [
    {
      "kind": "sql#user",
      "etag": "--redacted--",
      "name": "sqlserver",
      "host": "",
      "instance": "instance-id",
      "project": "project-id",
      "sqlserverUserDetails": {
        "serverRoles": [
          "CustomerDbRootRole"
        ]
      }
    },
    {
      "kind": "sql#user",
      "etag": "--redacted--",
      "name": "user-id-1",
      "host": "",
      "instance": "instance-id",
      "project": "project-id",
      "sqlserverUserDetails": {
        "serverRoles": [
          "CustomerDbRootRole"
        ]
      }
    },
    {
      "kind": "sql#user",
      "etag": "--redacted--",
      "name": "user-id-2",
      "host": "",
      "instance": "instance-id",
      "project": "project-id",
      "sqlserverUserDetails": {
        "serverRoles": [
          "CustomerDbRootRole"
        ]
      }
    },
    {
      ...
    },
    {
      ...
    }
  ]
}

Wenn eine Passwortrichtlinie für Nutzer festgelegt wurde, enthält der Abschnitt items der Antwort einen passwordPolicy-Abschnitt. Das folgende Codebeispiel zeigt die gesamte Klasse passwordPolicy:

  {
  ...
  "passwordValidationUserPolicy" : {
    {
      "enableFailedAttemptsCheck" : true,
      "allowedFailedAttempts" : 8,
      "passwordExpirationDuration" : "7d",
      "enablePasswordVerification" : true
    }
  },
  ...
}
  

MYSQL-Client

Um die MySQL-Nutzer aufzulisten, verwenden Sie bei der Eingabeaufforderung mysql die folgende SELECT-Anweisung:

SELECT user, host FROM mysql.user;

Bei Instanzen der zweiten Generation, für die nur das root-Nutzerkonto konfiguriert ist, sieht das Ausgabe ähnlich aus wie in diesem Beispiel:

+------+-----------+
| user | host      |
+------+-----------+
| root | %         |
+------+-----------+
1 row in set (0.01 sec)

Dieses Beispiel zeigt die Nutzer für eine Instanz mit dem root-Nutzer. Dieser Nutzer kann von jedem Host aus eine Verbindung herstellen (%). Im Passwortfeld wird der Hash des Passworts angezeigt.

Nutzerpasswort ändern

Nutzerpasswörter können auf eine der folgenden Arten geändert werden.

Console

  1. Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.

    Cloud SQL-Instanzen aufrufen

  2. Klicken Sie auf den Instanznamen, um die Seite Übersicht einer Instanz zu öffnen.
  3. Wählen Sie im SQL-Navigationsmenü die Option Nutzer aus.
  4. Klicken Sie für den zu aktualisierenden Nutzer auf das Dreipunkt-Menü Dreipunkt-Symbol.
  5. Wählen Sie Passwort ändern aus.
  6. Geben Sie ein neues Passwort ein.

    Wenn du weiterhin dein älteres Passwort verwenden möchtest, wähle das Kästchen Aktuelles Passwort beibehalten an.

  7. Klicken Sie auf OK.

gcloud

Verwenden Sie den Befehl gcloud sql users set-password, um ein Passwort zu ändern.

Ersetzen Sie Folgendes:

  • USER_NAME: Der Nutzername.
  • HOST: Der Hostname des Nutzers als spezifische IP-Adresse, Adressbereich oder beliebiger Host (%).
  • INSTANCE_NAME: Name der Instanz
  • PASSWORD: Ein Passwort. Es muss den Anforderungen der Passwortrichtlinien entsprechen, falls diese festgelegt sind.

Optional können Sie mit der Option --retain-password für MySQL 8.0 dem Nutzer erlauben, das ältere Passwort weiterhin zu verwenden. Wenn Sie das ältere Passwort verwerfen möchten, verwenden Sie die Option --discard-dual-password.

gcloud sql users set-password USER_NAME \
--host=HOST \
--instance=INSTANCE_NAME \
--password=PASSWORD

REST Version 1

Verwenden Sie zum Ändern eines Nutzerpassworts eine PUT-Anfrage mit der Methode users:update.

Mit der folgenden Anfrage wird das Passwort für das Nutzerkonto user_name'@'% aktualisiert. Wenn der Nutzer einen anderen Host hat, müssen Sie den Aufruf korrigieren und den korrekten Host eingeben.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • project-id: Ihre Projekt-ID
  • instance-id: die gewünschte Instanz-ID
  • user-id: die ID des Nutzers
  • password: das Passwort für den Nutzer
  • dual-password: einer dieser Enum-Werte:
    • DUAL_PASSWORD: Der Nutzer kann weiterhin das ältere Passwort verwenden.
    • NO_DUAL_PASSWORD: Der Nutzer kann das ältere Passwort nicht mehr verwenden.
    • NO_MODIFY_DUAL_PASSWORD: Der Status des doppelten Passworts bleibt unverändert.

HTTP-Methode und URL:

PUT https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users?name=user-id

JSON-Text anfordern:

{
  "name": "user-id",
  "password": "password",
  "retainedPassword" : "dual-password"
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "status": "DONE",
  "user": "user@example.com",
  "insertTime": "2020-02-07T22:38:41.217Z",
  "startTime": "2020-02-07T22:38:41.217Z",
  "endTime": "2020-02-07T22:38:44.801Z",
  "operationType": "UPDATE_USER",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

REST v1beta4

Verwenden Sie zum Ändern eines Nutzerpassworts eine PUT-Anfrage mit der Methode users:update.

Mit der folgenden Anfrage wird das Passwort für das Nutzerkonto user_name'@'% aktualisiert. Wenn der Nutzer einen anderen Host hat, müssen Sie den Aufruf korrigieren und den korrekten Host eingeben.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • project-id: Ihre Projekt-ID
  • instance-id: die gewünschte Instanz-ID
  • user-id: die ID des Nutzers
  • password: das Passwort für den Nutzer
  • dual-password: einer dieser Enum-Werte:
    • DUAL_PASSWORD: Der Nutzer kann weiterhin das ältere Passwort verwenden.
    • NO_DUAL_PASSWORD: Der Nutzer kann das ältere Passwort nicht mehr verwenden.
    • NO_MODIFY_DUAL_PASSWORD: Der Status des doppelten Passworts bleibt unverändert.

HTTP-Methode und URL:

PUT https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users?name=user-id

JSON-Text anfordern:

{
  "name": "user-id",
  "password": "password",
  "retainedPassword" : "dual-password"
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "DONE",
  "user": "user@example.com",
  "insertTime": "2020-02-07T22:38:41.217Z",
  "startTime": "2020-02-07T22:38:41.217Z",
  "endTime": "2020-02-07T22:38:44.801Z",
  "operationType": "UPDATE_USER",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

MYSQL-Client

  1. Um das Passwort zu ändern, verwenden Sie bei der Eingabeaufforderung mysql die folgende Anweisung SET PASSWORD:
    SET PASSWORD FOR USER_NAME = PASSWORD('auth_string');
    
  2. Leeren Sie die Tabelle mysql.user, damit die Änderung beibehalten wird:
    FLUSH TABLES mysql.user;
    

Wenn ein Nutzer aufgrund der Einstellungen von Passwortrichtlinien ausgesperrt ist, ändern Sie das Passwort, um ihn zu entsperren. Achten Sie darauf, dass Passwörter wenn Sie geändert werden der Passwortrichtlinie entsprechen.

Passwortrichtlinie für Nutzer entfernen

Sie können eine Passwortrichtlinie von einem Nutzer entfernen, der über den integrierten Authentifizierungstyp verfügt.

gcloud

Verwenden Sie zum Entfernen der Passwortrichtlinie für Nutzer den Befehl gcloud sql users set-password-policy und den Parameter --clear-password-policy.

Ersetzen Sie Folgendes:

  • USER_NAME: der Nutzername.
  • INSTANCE_NAME ist der Name der Instanz.
  • HOST: der Hostname des Nutzers als bestimmte IP-Adresse, Adressbereich oder beliebiger Host (%).
gcloud sql users set-password-policy USER_NAME \
--instance=INSTANCE_NAME \
--host=HOST \
--clear-password-policy

REST Version 1

Verwenden Sie eine PUT-Anfrage mit der Methode users:update, um eine Richtlinie für das Nutzerpasswort zu entfernen.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Ihre Projekt-ID.
  • INSTANCE_ID: die Instanz-ID
  • USER_ID: die ID des Nutzers
  • PASSWORD: Passwort des Nutzers

HTTP-Methode und URL:

PUT https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users?name=USER_ID

JSON-Text anfordern:

{
  "name": "USER_ID",
  "password": "PASSWORD",
  "data":
  {
    "passwordValidationUserPolicy" : {}
  }
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten in etwa folgende JSON-Antwort erhalten:

REST v1beta4

Verwenden Sie eine PUT-Anfrage mit der Methode users:update, um eine Richtlinie für das Nutzerpasswort zu entfernen.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Ihre Projekt-ID.
  • INSTANCE_ID: die Instanz-ID
  • USER_ID: die ID des Nutzers
  • PASSWORD: Passwort des Nutzers

HTTP-Methode und URL:

PUT https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users?name=USER_ID

JSON-Text anfordern:

{
  "name": "USER_ID",
  "password": "PASSWORD",
  "data":
  {
    "passwordValidationUserPolicy" : {}
  }
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten in etwa folgende JSON-Antwort erhalten:

Nutzer entfernen

Der Standardnutzer kann Nutzer entfernen.

Bevor Sie einen Nutzer entfernen, müssen Sie alle seine Objekte entfernen oder deren Inhaberschaft neu zuweisen. Alle Berechtigungen, die der Rolle für andere Objekte gewährt wurden, müssen aufgehoben werden.

Console

  1. Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.

    Cloud SQL-Instanzen aufrufen

  2. Klicken Sie auf den Instanznamen, um die Seite Übersicht einer Instanz zu öffnen.
  3. Wählen Sie im SQL-Navigationsmenü die Option Nutzer aus.
  4. Klicken Sie für den zu entfernenden Nutzer auf das Dreipunkt-Menü Dreipunkt-Symbol.
  5. Wählen Sie Entfernen und anschließend noch einmal Entfernen aus.

gcloud

Verwenden Sie den Befehl gcloud sql users delete, um einen Nutzer zu entfernen.

Ersetzen Sie Folgendes:

  • USER_NAME: Der Nutzername.
  • HOST: Der Hostname des Nutzers als spezifische IP-Adresse, Adressbereich oder beliebiger Host (%).
  • INSTANCE_NAME: Name der Instanz
gcloud sql users delete USER_NAME \
--host=HOST \
--instance=INSTANCE_NAME

REST Version 1

In der folgenden Anfrage wird mit der Methode users.delete das angegebene Nutzerkonto gelöscht.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Ihre Projekt-ID
  • INSTANCE_ID: die gewünschte Instanz-ID
  • USERNAME: die E-Mail-Adresse des Nutzers oder Dienstkontos

HTTP-Methode und URL:

DELETE https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users?host=&name=USERNAME

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "DONE",
  "user": "user@example.com",
  "insertTime": "2020-02-07T22:38:41.217Z",
  "startTime": "2020-02-07T22:38:41.217Z",
  "endTime": "2020-02-07T22:38:44.801Z",
  "operationType": "DELETE_USER",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

In der folgenden Anfrage wird mit der Methode users.delete das angegebene Nutzerkonto gelöscht.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Ihre Projekt-ID
  • INSTANCE_ID: die gewünschte Instanz-ID
  • USERNAME: die E-Mail-Adresse des Nutzers oder Dienstkontos

HTTP-Methode und URL:

DELETE https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users?host=&name=USERNAME

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "DONE",
  "user": "user@example.com",
  "insertTime": "2020-02-07T22:38:41.217Z",
  "startTime": "2020-02-07T22:38:41.217Z",
  "endTime": "2020-02-07T22:38:44.801Z",
  "operationType": "DELETE_USER",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

MYSQL-Client

  1. Verwenden Sie bei der mysql-Eingabeaufforderung die folgende Anweisung DROP USER, um einen Nutzer zu löschen:
    DROP USER 'USER_NAME'@'HOST_NAME';
    
  2. Leeren Sie die Tabelle mysql.user, damit die Änderung beibehalten wird:
    FLUSH TABLES mysql.user;
    

Nutzerattribute aktualisieren

Aktualisieren Sie Nutzereigenschaften wie den Host oder die Berechtigungen mit dem Client mysql. Weitere Informationen finden Sie unter MySQL User Account Management in der MySQL-Dokumentation.

Nächste Schritte