PostgreSQL-Nutzer erstellen und verwalten

Auf dieser Seite wird beschrieben, wie Sie diese Aufgaben für Cloud SQL-Instanzen durchführen:

  • Standardnutzerkonto konfigurieren
  • Andere Nutzerkonten erstellen, löschen und aktualisieren

Weitere Informationen dazu, wie Nutzer mit Cloud SQL arbeiten, finden Sie unter PostgreSQL-Nutzer.

Hinweis

Bevor Sie diese Aufgaben ausführen, erstellen Sie zuerst eine Cloud SQL-Instanz. Weitere Informationen finden Sie unter Instanzen erstellen.

Wenn Sie den administrativen Client Ihrer Datenbank für die Nutzerverwaltung verwenden möchten, muss der Standardnutzer für die Instanz konfiguriert sein. Weitere Informationen finden Sie unter Standardkonto konfigurieren.

Darüber hinaus muss ein mit Ihrer Instanz verbundener administrativer Client konfiguriert sein. Weitere Informationen finden Sie unter Verbindungsoptionen für externe Anwendungen.

Standardnutzerkonto konfigurieren

Wenn Sie eine neue Cloud SQL-Instanz erstellen, müssen Sie das Standardnutzerkonto konfigurieren, bevor Sie eine Verbindung zur Instanz herstellen können.

Für Cloud SQL for PostgreSQL ist postgres der Standardnutzer.

So konfigurieren Sie den 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 entsprechende Übersicht zu öffnen.
  3. Wählen Sie im SQL-Navigationsmenü die Option Nutzer aus.
  4. Suchen Sie den Nutzer postgres und wählen Sie im Dreipunkt-Menü Dreipunkt-Symbol die Option Passwort ändern aus.
  5. Geben Sie ein starkes Passwort ein, das Sie sich gut merken können, und klicken Sie auf OK.

gcloud

Legen Sie das Passwort für den Standardnutzer fest:

gcloud sql users set-password postgres \
--instance=INSTANCE_NAME \
--prompt-for-password

REST Version 1

Ersetzen Sie dabei folgende Werte für die 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:

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

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

In der folgenden Anfrage wird mit der Methode users.update das Root-Nutzerkonto aktualisiert.

Ersetzen Sie dabei folgende Werte für die 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:

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"
}

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

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 entsprechende Übersicht 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.

    • Wenn Sie die integrierte Authentifizierung (Standardeinstellung) auswählen, fügen Sie die folgenden Informationen hinzu:
      • Nutzername
      • Passwort (optional).
      • Wenn Sie Cloud IAM auswählen, müssen Sie im Feld Mitglied die E-Mail-Adresse eines vorhandenen IAM-Mitglieds Ihres Google Cloud-Projekts eingeben, das mit dem Nutzer verknüpft werden soll.
    • Klicken Sie auf Add.

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

Wenn Sie die Attribute für diese Nutzer ändern müssen, verwenden Sie den Befehl ALTER ROLE im psql-Client. Nicht alle Attribute können mit ALTER ROLE geändert werden. Zu den Ausnahmen gehören die Attribute der Rollen NOSUPERUSER und NOREPLICATION.

gcloud

Erstellen Sie den Nutzer:

gcloud sql users create USER_NAME \
--instance=INSTANCE_NAME \
--password=PASSWORD

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

Wenn Sie die Attribute für diese Nutzer ändern müssen, verwenden Sie den Befehl ALTER ROLE im psql-Client. Nicht alle Attribute können mit ALTER ROLE geändert werden. Zu den Ausnahmen gehören die Attribute der Rollen NOSUPERUSER und NOREPLICATION.

Für Cloud SQL gelten die gleichen Längenbeschränkungen für Nutzernamen wie für lokales PostgreSQL.

REST Version 1

In der folgenden Anfrage wird mit der Methode users.insert das Nutzerkonto „user_name“ erstellt.

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 der Authentifizierungsmethode von Cloud SQL erstellt werden, erhalten automatisch die Rolle cloudsqlsuperuser und haben die folgenden Berechtigungen: CREATEROLE, CREATEDB und LOGIN.

Wenn Sie die Attribute für diese Nutzer ändern müssen, verwenden Sie den Befehl ALTER ROLE im psql-Client. Nicht alle Attribute können mit ALTER ROLE geändert werden. Zu den Ausnahmen gehören die Attribute der Rollen NOSUPERUSER und NOREPLICATION.

Für Cloud SQL gelten die gleichen Längenbeschränkungen für Nutzernamen wie für lokales PostgreSQL.

REST v1beta4

In der folgenden Anfrage wird mit der Methode users.insert das Nutzerkonto „user_name“ erstellt.

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 der Authentifizierungsmethode von Cloud SQL erstellt werden, erhalten automatisch die Rolle cloudsqlsuperuser und haben die folgenden Berechtigungen: CREATEROLE, CREATEDB und LOGIN.

Wenn Sie die Attribute für diese Nutzer ändern müssen, verwenden Sie den Befehl ALTER ROLE im psql-Client. Nicht alle Attribute können mit ALTER ROLE geändert werden. Zu den Ausnahmen gehören die Attribute der Rollen NOSUPERUSER und NOREPLICATION.

Für Cloud SQL gelten die gleichen Längenbeschränkungen für Nutzernamen wie für lokales PostgreSQL.

psql-Client

  1. Erstellen Sie den Nutzer über die psql-Eingabeaufforderung:
      CREATE USER USER_NAME
          WITH ATTRIBUTE1 ATTRIBUTE2...;
          \password USER_NAME;
      

    Geben Sie das Passwort ein, wenn Sie dazu aufgefordert werden.

    Weitere Informationen über Rollenattribute finden Sie in der PostgreSQL-Dokumentation.

  2. Sie können prüfen, ob der Nutzer erstellt wurde, indem Sie die Benutzertabelle anzeigen lassen:
      SELECT * FROM pg_roles;
      

Nutzerpasswort ändern

So ändern Sie ein Nutzerpasswort:

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 entsprechende Übersicht 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, geben Sie ein neues Passwort ein und klicken Sie auf OK.

gcloud

Aktualisieren Sie das Passwort:

gcloud sql users set-password USER_NAME \
--instance=INSTANCE_NAME \
--prompt-for-password

REST Version 1

In der folgenden Anfrage wird die Methode users:update verwendet, um das Passwort für das Nutzerkonto „user_name“ zu aktualisieren.

Ersetzen Sie dabei folgende Werte für die 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:

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

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

In der folgenden Anfrage wird die Methode users:update verwendet, um das Passwort für das Nutzerkonto „user_name“ zu aktualisieren.

Ersetzen Sie dabei folgende Werte für die 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:

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"
}

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

Sie müssten in etwa folgende JSON-Antwort 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"
}

psql-Client

  1. Ändern Sie das Passwort über die psql-Eingabeaufforderung:
    \password USER_NAME;
    

    Geben Sie das Passwort ein, wenn Sie dazu aufgefordert werden.

Nutzer aktualisieren

Verwenden Sie den psql-Client, um Nutzereigenschaften wie Attribute zu aktualisieren. Weitere Informationen finden Sie unter Datenbankrollen in der PostgreSQL-Dokumentation.

Nutzer auflisten

So listen Sie Nutzer auf:

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 entsprechende Übersicht zu öffnen.
  3. Wählen Sie im SQL-Navigationsmenü die Option Nutzer aus.

    In der Spalte Authentication wird angezeigt, ob der Nutzer ein IAM user ist oder die integrierte Authentifizierung verwendet.

gcloud

Listen Sie die Nutzer für diese Instanz auf:

gcloud sql users list \
--instance=INSTANCE_NAME

Der Befehl gibt für jeden Nutzer Name, Host und den Authentifizierungs-Type (als BUILT_IN oder CLOUD_IAM_USER) zurück.

Eine vollständige Liste der Parameter für diesen Befehl finden Sie auf der Referenzseite für gcloud sql users list.

REST Version 1

In der folgenden Anfrage werden mit der Methode users.list die für eine Instanz definierten Nutzer aufgelistet.

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"
        ]
      }
    },
    {
      ...
    },
    {
      ...
    }
  ]
}

REST v1beta4

In der folgenden Anfrage werden mit der Methode users.list die für eine Instanz definierten Nutzer aufgelistet.

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 müssten in etwa folgende JSON-Antwort 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"
        ]
      }
    },
    {
      ...
    },
    {
      ...
    }
  ]
}

psql-Client

Listen Sie die PostgreSQL-Nutzer über die psql-Eingabeaufforderung auf:

SELECT * FROM pg_roles;

Nutzer löschen

So löschen Sie einen Nutzer:

Bevor Sie einen Nutzer löschen, 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 entsprechende Übersicht zu öffnen.
  3. Wählen Sie im SQL-Navigationsmenü die Option Nutzer aus.
  4. Klicken Sie für den zu löschenden Nutzer auf das Dreipunkt-Menü Dreipunkt-Symbol.
  5. Wählen Sie Entfernen und anschließend noch einmal Entfernen aus.

gcloud

Löschen Sie den Nutzer:

gcloud sql users delete USER_NAME \
--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 müssten in etwa folgende JSON-Antwort 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"
}

psql-Client

  1. Löschen Sie den Nutzer über die psql-Eingabeaufforderung:
    DROP ROLE USER_NAME;
    

    Weitere Informationen zur DROP ROLE-Anweisung finden Sie in der PostgreSQL-Dokumentation.

Nächste Schritte