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
- Cloud SQL-Instanz erstellen Weitere Informationen finden Sie unter Instanzen erstellen.
- Aktivieren Sie Passwortrichtlinien für die Instanz. Weitere Informationen finden Sie unter Passwortrichtlinien für Instanzen.
Wenn Sie den administrativen Client Ihrer Datenbank für die Nutzerverwaltung verwenden möchten, gehen Sie so vor:
Verbinden Sie den Client mit Ihrer Instanz. Siehe Verbindungsoptionen für externe Anwendungen.
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 istroot@%
der Standardnutzer. Dies bedeutet einen Datenbanknutzer mit dem Nutzernamen root
, der eine Verbindung von jedem Host (@%
) aus herstellen kann.
Console
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Klicken Sie auf den Instanznamen, um die Seite Übersicht einer Instanz zu öffnen.
- Wählen Sie im SQL-Navigationsmenü die Option Nutzer aus.
- Suchen Sie den Nutzer
root
und wählen Sie dann im Dreipunkt-Menü 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.
- 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
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Klicken Sie auf den Instanznamen, um die Seite Übersicht einer Instanz zu öffnen.
- Wählen Sie im SQL-Navigationsmenü die Option Nutzer aus.
- 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.
- 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.
- 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.
Ä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
- Rufen Sie Cloud Shell auf.
-
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).
-
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 alsmain.tf
bezeichnet.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
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.
- Prüfen und ändern Sie die Beispielparameter, die auf Ihre Umgebung angewendet werden sollen.
- Speichern Sie die Änderungen.
-
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
-
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.
-
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.
- Ö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:
- Um den Löschschutz zu deaktivieren, setzen Sie in der Terraform-Konfigurationsdatei das Argument
deletion_protection
auffalse
.deletion_protection = "false"
- 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
-
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
- 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.
- Sie können anhand der Nutzertabelle prüfen, ob der Nutzer erstellt wurde:
Bei Instanzen der zweiten Generation wird das Ergebnis wie in diesem Beispiel ausgegeben:SELECT user, host FROM mysql.user;
+----------+-----------+ | user | host | +----------+-----------+ | root | % | | newuser | % | +----------+-----------+ 1 row in set (0.01 sec)
- Weisen Sie dem Nutzer Berechtigungen mit der Anweisung
GRANT
zu. Weitere Informationen finden Sie unter Von MySQL gewährte Berechtigungen. - 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
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Klicken Sie auf den Instanznamen, um die Seite Übersicht einer Instanz zu öffnen.
- Wählen Sie im SQL-Navigationsmenü die Option Nutzer aus.
- Klicken Sie für den Nutzer, dessen Richtlinie Sie ändern möchten, auf .
- Wählen Sie Passwortrichtlinie bearbeiten aus.
- 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
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Klicken Sie auf den Instanznamen, um die Seite Übersicht einer Instanz zu öffnen.
- Wählen Sie im SQL-Navigationsmenü die Option Nutzer aus.
Die Liste enthält die Typen
User name
,Host name
undAuthentication
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
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Klicken Sie auf den Instanznamen, um die Seite Übersicht einer Instanz zu öffnen.
- Wählen Sie im SQL-Navigationsmenü die Option Nutzer aus.
- Klicken Sie für den zu aktualisierenden Nutzer auf das Dreipunkt-Menü .
- Wählen Sie Passwort ändern aus.
- Geben Sie ein neues Passwort ein.
Wenn du weiterhin dein älteres Passwort verwenden möchtest, wähle das Kästchen Aktuelles Passwort beibehalten an.
- 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
- Um das Passwort zu ändern, verwenden Sie bei der Eingabeaufforderung
mysql
die folgende Anweisung SET PASSWORD:SET PASSWORD FOR USER_NAME = PASSWORD('auth_string');
- 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
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Klicken Sie auf den Instanznamen, um die Seite Übersicht einer Instanz zu öffnen.
- Wählen Sie im SQL-Navigationsmenü die Option Nutzer aus.
- Klicken Sie für den zu entfernenden Nutzer auf das Dreipunkt-Menü .
- 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
- Verwenden Sie bei der
mysql
-Eingabeaufforderung die folgende Anweisung DROP USER, um einen Nutzer zu löschen:DROP USER 'USER_NAME'@'HOST_NAME';
- 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 Clientmysql
. Weitere Informationen finden Sie unter MySQL User Account Management in der MySQL-Dokumentation.
Nächste Schritte
- Funktionsweise von Nutzerkonten in Cloud SQL
- MySQL-Dokumentation über die Erstellung von Nutzern
- Verbindung mit Instanzen herstellen