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. 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.

Für Cloud SQL for MySQL ist root@% der Standardnutzer.

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 aufgeführten Vorgaben für das Passwort, die aus der Passwortrichtlinie abgeleitet werden, die für die Instanz festgelegt ist.

  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 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: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 Add (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.

Dabei gilt:

  • USER_NAME: Der Nutzername.
  • HOST: Der Hostname des Nutzers als eine bestimmte IP-Adresse oder ein Adressbereich.
  • INSTANCE_NAME: Der Name der Instanz.
  • PASSWORD: Das Passwort für den Nutzer.

Fügen Sie optional die Parameter Richtlinie für Nutzerpasswort hinzu.

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

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 folgenden Schritte aus, um Ihre Terraform-Konfiguration in einem Google Cloud-Projekt anzuwenden:

  1. Rufen Sie Cloud Shell auf.
  2. Legen Sie das Google Cloud-Projekt fest, auf das Sie die Terraform-Konfiguration anwenden möchten:
        export GOOGLE_CLOUD_PROJECT=PROJECT_ID
        
  3. Erstellen Sie ein Verzeichnis und öffnen Sie eine neue Datei in diesem Verzeichnis. Der Dateiname muss die Erweiterung .tf haben, z. B. main.tf:
        mkdir DIRECTORY && cd DIRECTORY && nano main.tf
        
  4. Kopieren Sie das Beispiel in main.tf.
  5. Prüfen und ändern Sie die Beispielparameter, die auf Ihre Umgebung angewendet werden sollen.
  6. Speichern Sie die Änderungen, indem Sie Ctrl-x und dann y drücken.
  7. Initialisieren Sie Terraform:
    terraform init
  8. 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.

  9. 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.

  10. Ö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

Fügen Sie optional die Parameter Richtlinie für Nutzerpasswort hinzu.

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

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

Fügen Sie optional die Parameter Richtlinie für Nutzerpasswort hinzu.

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

MYSQL-Client

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

    Fügen Sie optional die Parameter Richtlinie für Nutzerpasswort hinzu.

  2. Sie können überprüfen, ob der Nutzer erstellt wurde, indem Sie die Benutzertabelle anzeigen lassen:
    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;
    

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.

    Darüber hinaus wird für den integrierten Authentifizierungstyp auch Password status angegeben.

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 und der Status der Passwortrichtlinie 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 Nutzerpasswortrichtlinie festgelegt wurde, enthält der Abschnitt items der Antwort den Abschnitt passwordPolicy. Im Folgenden finden Sie ein Beispiel.

  {
  ...
  "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 Nutzerpasswortrichtlinie festgelegt wurde, enthält der Abschnitt items der Antwort den Abschnitt passwordPolicy. Im Folgenden finden Sie ein Beispiel.

  {
  ...
  "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 wird das Ergebnis wie in diesem Beispiel ausgegeben:

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

In diesem Beispiel werden die Nutzer einer Instanz angezeigt; hier wurde das Administratorkonto 'root'@'%' hinzugefügt. 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 Sie weiterhin Ihr älteres Passwort verwenden möchten, wählen Sie die Schaltfläche Duales Passwort aktivieren aus.

  7. Klicken Sie auf OK.

gcloud

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

Dabei gilt:

  • USER_NAME: Der Nutzername.
  • HOST: Der Hostname des Nutzers als eine bestimmte IP-Adresse oder ein Adressbereich.
  • INSTANCE_NAME: Der Name der Instanz.
  • PASSWORD: Ein Passwort. Es muss den Anforderungen der Passwortrichtlinien entsprechen, falls diese festgelegt sind.

Bei MySQL 8.0 können Sie optional zulassen, dass der Nutzer das ältere Passwort mit der Option --retain-password verwendet. Verwenden Sie die Option --discard-dual-password, um das ältere Passwort zu verwerfen.

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 verwenden.
    • NO_MODIFY_DUAL_PASSWORD: Der Status des dualen 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 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: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 verwenden.
    • NO_MODIFY_DUAL_PASSWORD: Der Status des dualen 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 gesperrt ist, ändern Sie das Passwort, um ihn zu entsperren. Vergewissern Sie sich, dass die Passwörter, wenn sie geändert werden, den Passwortrichtlinien entsprechen.

Nutzerpasswortrichtlinie festlegen

Sie können eine Passwortrichtlinie festlegen, während Sie einen Nutzer mit dem integrierten Authentifizierungstyp erstellen.

Sie können eine Richtlinie folgendermaßen ändern oder festlegen.

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:
    • Ablauf des Passworts festlegen: 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 unter Cloud SQL for MySQL 8.0 unterstützt.

    • Aktuelles Passwort anfordern, wenn Passwort geändert wird: Nutzer müssen ihr vorhandenes Passwort eingeben, wenn sie versuchen, es zu ändern.

gcloud

Verwenden Sie zum Festlegen der Richtlinie für Nutzerpasswörter den Befehl gcloud sql users set-password-policy.

Verwenden Sie den --password-policy-enable-password-verification, damit Nutzer ihr bestehendes Passwort eingeben müssen, wenn sie versuchen, das Passwort zu ändern. Verwenden Sie zum Deaktivieren dieses Parameters --no-password-policy-enable-password-verification.

Dabei gilt:

  • USER_NAME: Der Nutzername.
  • INSTANCE_NAME: Der Name der Instanz.
  • 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 \
--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 Richtlinie für Nutzerpasswörter zu löschen.

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

Die Richtlinie für Nutzerpasswörter finden Sie unter List users.

REST Version 1

Verwenden Sie zum Festlegen einer Nutzerpasswortrichtlinie eine PUT-Anfrage mit der Methode users:update.

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: das 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.
  • no-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 dem Versuch, das Passwort zu ändern, 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" : "no-of-attempts",
        "passwordExpirationDuration" : "password-expiration-duration",
        "enablePasswordVerification" : "verify-password"
      }
    },
  }
}

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

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

Die Richtlinie für Nutzerpasswörter finden Sie unter List users.

REST v1beta4

Verwenden Sie zum Festlegen einer Nutzerpasswortrichtlinie eine PUT-Anfrage mit der Methode users:update.

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: das Passwort des Nutzers
  • failed-attempts-check: Optional. Legen Sie true fest, um eine Prüfung der Anzahl der fehlgeschlagenen Anmeldeversuche zu aktivieren, nach denen das Konto gesperrt ist.
  • no-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: Optional. Legen Sie true fest, damit Nutzer bei der Änderung des Passworts ihr vorhandenes Passwort eingeben können.

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" : "no-of-attempts",
        "passwordExpirationDuration" : "password-expiration-duration",
        "enablePasswordVerification" : "verify-password"
      }
    },
  }
}

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

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

Die Richtlinie für Nutzerpasswörter finden Sie unter List users.

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;

Dabei gilt:

  • 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.

Die Richtlinie für Nutzerpasswörter finden Sie unter List users.

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.

Dabei gilt:

  • USER_NAME: Der Nutzername.
  • HOST: Der Hostname des Nutzers als eine bestimmte IP-Adresse oder ein Adressbereich.
  • INSTANCE_NAME: Der 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 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: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 zum Löschen eines Nutzers bei der Eingabeaufforderung mysql die folgende DROP USER-Anweisung:
    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