Benannte Schemas erstellen und verwalten

Auf dieser Seite wird beschrieben, wie Sie benannte Schemas erstellen, verwenden und löschen sowie Detaillierte Zugriffssteuerung auf Objekte in benannten Schemas Um eine Übersicht über Weitere Informationen zu benannten Schemas finden Sie unter Benannte Schemas.

Hinweise

Für die Durchführung von Verfahren auf dieser Seite benötigen Sie Folgendes:

Benanntes Schema erstellen

Mit dem Befehl CREATE SCHEMA (GoogleSQL und PostgreSQL) wird zum Erstellen eines benannten Schemas verwendet.

  1. Öffnen Sie in der Google Cloud Console die Seite Spanner.

    Spanner aufrufen

  2. Wählen Sie eine Instanz aus der Liste aus.

  3. Wählen Sie eine Datenbank aus.

  4. Klicken Sie im Navigationsmenü auf Spanner Studio.

  5. Neuen Tab durch Klicken auf öffnen Neuer SQL-Editor-Tab oder Neuer Tab:

  6. Geben Sie auf dem Tab Editor Ihre DDL ein.

    GoogleSQL

    Führen Sie die Anweisung CREATE SCHEMA aus, um das benannte Schema für Beispiel:

    CREATE SCHEMA sch1;
    

    Fügen Sie dem benannten Schema Datenbankobjekte hinzu. Beispiel:

    CREATE SEQUENCE sch1.sequence OPTIONS (
      sequence_kind = 'bit_reversed_positive'
    );
    
    CREATE TABLE Singers (
      SingerId INT64 NOT NULL,
      FirstName STRING(1024),
      LastName STRING(1024),
      SingerInfo BYTES(MAX),
    ) PRIMARY KEY(SingerId);
    
    CREATE INDEX indexOnSingers ON Singers(FirstName);
    
    CREATE TABLE Albums (
      SingerId INT64 NOT NULL,
      AlbumId INT64 NOT NULL,
      AlbumTitle STRING(MAX),
    ) PRIMARY KEY(SingerId, AlbumId),
      INTERLEAVE IN PARENT Singers ON DELETE CASCADE;
    
    CREATE TABLE Songs (
      SingerId INT64 NOT NULL,
      AlbumId INT64 NOT NULL,
      TrackId INT64 NOT NULL,
      SongName STRING(MAX),
    ) PRIMARY KEY(SingerId, AlbumId, TrackId),
      INTERLEAVE IN PARENT Albums ON DELETE CASCADE;
    
    CREATE TABLE sch1.Singers (
      SingerId INT64 NOT NULL,
      FirstName STRING(1024),
      LastName STRING(1024),
      SingerInfo BYTES(MAX),
    ) PRIMARY KEY(SingerId);
    
    CREATE INDEX sch1.indexOnSingers ON sch1.Singers(FirstName);
    
    CREATE TABLE sch1.Albums (
      SingerId INT64 NOT NULL,
      AlbumId INT64 NOT NULL,
      AlbumTitle STRING(MAX),
    ) PRIMARY KEY(SingerId, AlbumId),
      INTERLEAVE IN PARENT sch1.Singers ON DELETE CASCADE;
    
    CREATE TABLE sch1.Songs (
      SingerId INT64 NOT NULL,
      AlbumId INT64 NOT NULL,
      TrackId INT64 NOT NULL,
      SongName STRING(MAX),
    ) PRIMARY KEY(SingerId, AlbumId, TrackId),
      INTERLEAVE IN PARENT sch1.Albums ON DELETE CASCADE;
    
    CREATE VIEW sch1.SingerView SQL SECURITY INVOKER
      AS Select s.FirstName, s.LastName, s.SingerInfo
      FROM sch1.Singers AS s WHERE s.SingerId = 123456;
    
    CREATE VIEW SingerView SQL SECURITY INVOKER
      AS Select s.FirstName, s.LastName, s.SingerInfo
      FROM Singers AS s WHERE s.SingerId = 123456;
    

    Sie können mit Spanner nur einen Index erstellen, dem gleichen Schema wie die Tabelle, die den Index verwendet. Wir müssen sicherstellen, dass die Namen des Index- und Tabellenschemas identisch sind.

    PostgreSQL

    Führen Sie die Anweisung CREATE SCHEMA aus, um das benannte Schema für Beispiel:

    CREATE SCHEMA sch1;
    

    Fügen Sie dem benannten Schema Datenbankobjekte hinzu. Beispiel:

    CREATE SEQUENCE sch1.sequence BIT_REVERSED_POSITIVE
    CREATE TABLE sch1.singers(
      singer_id bigint primary key, album_id bigint default(nextval('sch1.sequence')))
    CREATE TABLE sch1.albums(k bigint default(nextval('sch1.sequence'))primary key, album_id bigint)
    
    CREATE VIEW sch1.singer_view SQL SECURITY INVOKER
      AS SELECT * FROM sch1.singers
    CREATE INDEX index_singers ON TABLE sch1.singers(album_id)
    

    Spanner lässt die Indexerstellung nur im selben Schema zu. In Spanner- oder PostgreSQL-Anweisungen tun dies, Standardeinstellung. Sie müssen zum Erstellen von Indexen keine voll qualifizierten Namen verwenden zu benannten Schemas.

  7. Sehen Sie sich die benannten Schemas und zugehörigen Objekte im Bereich Explorer an.

Detaillierte Zugriffssteuerung zu benannten Schemas hinzufügen

Die folgenden DDL-Anweisungen fügen eine differenzierte Zugriffssteuerung auf ein benanntes Schema hinzu:

  • Mit der Berechtigung USAGE werden Berechtigungen für das Schemaobjekt gewährt. Das USAGE wird dem Standardschema standardmäßig die Berechtigung erteilt. Sie können jedoch die Berechtigung USAGE für das Standardschema widerrufen. Seien Sie vorsichtig, wenn der Zugriff widerrufen, da gesperrte Nutzer und Rollen keinen Zugriff mehr auf Objekte im Standardschema.
  • Mit der Anweisung ALL werden im Bulk-Verfahren Berechtigungen für ALLE Objekte eines Typs in das Schema.
  • Das Schlüsselwort DEFAULT verweist auf das Standardschema in FGAC-DDL-Anweisungen.

Für den Zugriff auf ein Objekt in einem benannten Schema benötigen Sie Nutzungsberechtigung für das benannten Schema und die entsprechenden Berechtigungen für Datenbankobjekte, Schema. Die folgenden Anweisungen stellen diese Berechtigungen bereit:

  • GRANT ALL (GoogleSQL) und PostgreSQL) gewährt der Rolle die Berechtigung, auf alle Objekte in der Tabelle zuzugreifen, die mit das benannte Schema. Diese Anweisung gilt nur für Objekte, die zu diesem Zeitpunkt zu einem bestimmten Zeitpunkt. Wenn Sie der Tabelle später weitere Objekte hinzufügen, müssen Sie auf diese Objekte zugreifen können.
  • GRANT USAGE (GoogleSQL) und PostgreSQL) gewährt der Rolle die Berechtigung, auf Objekte im Schema zuzugreifen. Dieses ermöglicht es dem Empfänger, nach Objekten im Schema zu suchen.
  1. Öffnen Sie in der Google Cloud Console die Seite Spanner.

    Spanner aufrufen

  2. Wählen Sie eine Instanz aus der Liste aus.

  3. Wählen Sie eine Datenbank aus.

  4. Klicken Sie im Navigationsmenü auf Spanner Studio.

  5. Neuen Tab durch Klicken auf öffnen Neuer SQL-Editor-Tab oder Neuer Tab:

  6. Geben Sie auf dem Tab Editor Ihre DDL ein.

    GoogleSQL

    Erstellen Sie die benutzerdefinierte Rolle für das benannte Schema. Im folgenden Beispiel verwenden wir role1 und role2.

    CREATE ROLE role1
    CREATE ROLE role2
    

    Weisen Sie den Tabellen, die das benannte Schema verwenden, die Rolle zu: GRANT ALL Im folgenden Beispiel verwenden wir sch1 für das benannte Schema und role1 für die Rolle.

    GRANT SELECT ON ALL TABLES IN SCHEMA sch1 TO ROLE role1
    

    Gewähren Sie den von Ihnen erstellten Rollen Nutzung des Schemas. Im Folgenden Beispielsweise gewähren wir role1 und role2 die Nutzung für sch1.

    GRANT USAGE ON SCHEMA sch1 TO ROLE role1, role2
    

    PostgreSQL

    Erstellen Sie die benutzerdefinierte Rolle für das benannte Schema. Im folgenden Beispiel verwenden wir role1 und role2.

    CREATE ROLE role1
    CREATE ROLE role2
    

    Weisen Sie den Tabellen, die das benannte Schema verwenden, die Rolle zu: GRANT ALL Im folgenden Beispiel verwenden wir sch1 für das benannte Schema und role1 für die Rolle.

    GRANT SELECT ON ALL TABLES IN SCHEMA sch1 TO role1
    

    Gewähren Sie den von Ihnen erstellten Rollen Nutzung des Schemas. Im Folgenden Beispielsweise gewähren wir role1 und role2 die Nutzung für sch1.

    GRANT USAGE ON SCHEMA sch1 TO role1, role2
    

Detaillierte Zugriffssteuerung für ein Standardschema hinzufügen und widerrufen

Wenn Sie benannte Schemas haben, heißt das Standardschema default. Erforderliche Schritte Verwenden Sie den Schemanamen default, wenn Sie eine detaillierte Zugriffssteuerung hinzufügen oder widerrufen.

Standardschema eine detaillierte Zugriffssteuerung hinzufügen

Standardmäßig haben alle Nutzer und Rollen die Berechtigung USAGE für die Standardeinstellung Schema.

  1. Öffnen Sie in der Google Cloud Console die Seite Spanner.

    Spanner aufrufen

  2. Wählen Sie eine Instanz aus der Liste aus.

  3. Wählen Sie eine Datenbank aus.

  4. Klicken Sie im Navigationsmenü auf Spanner Studio.

  5. Neuen Tab durch Klicken auf öffnen Neuer SQL-Editor-Tab oder Neuer Tab:

  6. Geben Sie auf dem Tab Editor Ihre DDL ein.

    GoogleSQL

    Im folgenden Beispiel gewähren wir role1 Zugriff auf alle Tabellen.

    GRANT SELECT ON ALL TABLES IN SCHEMA default TO ROLE role1
    

    PostgreSQL

    Im folgenden Beispiel gewähren wir role1 Zugriff auf alle Tabellen.

    GRANT SELECT ON ALL TABLES IN SCHEMA default TO role1
    

Detaillierte Zugriffssteuerung für ein Standardschema widerrufen

Sie können die standardmäßigen Berechtigungen für die detaillierte Zugriffssteuerung für das Standardschema mithilfe der REVOKE USAGE-Befehl.

  1. Öffnen Sie in der Google Cloud Console die Seite Spanner.

    Spanner aufrufen

  2. Wählen Sie eine Instanz aus der Liste aus.

  3. Wählen Sie eine Datenbank aus.

  4. Klicken Sie im Navigationsmenü auf Spanner Studio.

  5. Neuen Tab durch Klicken auf öffnen Neuer SQL-Editor-Tab oder Neuer Tab:

  6. Geben Sie auf dem Tab Editor Ihre DDL ein.

    GoogleSQL

    REVOKE USAGE ON SCHEMA DEFAULT FROM ROLE public
    

    PostgreSQL

    REVOKE USAGE ON SCHEMA public FROM public
    
  7. Nachdem der vorherige Befehl ausgeführt wurde, müssen wir die Rollen, die auf das Standardschema zugreifen müssen. Im folgenden Beispiel werden role1 Berechtigungen gewährt.

    GoogleSQL

    Im folgenden Beispiel gewähren wir Zugriff auf das Standardschema role1

    SCHEMA default to ROLE role1
    

    PostgreSQL

    Im folgenden Beispiel gewähren wir Zugriff auf das Standardschema role1

    GRANT USAGE ON SCHEMA public To role1
    

Benannte Schemas ansehen

  1. Wählen Sie eine Instanz aus der Liste aus.
  2. Wählen Sie eine Datenbank aus.
  3. Klicken Sie im Navigationsmenü auf Spanner Studio.
  4. Maximieren Sie im Bereich Explorer die Drop-down-Liste Schemas.

    Explorer mit maximierter Schemaliste

Alternativ können Sie SQL verwenden, um alle Schemas im Tabelle „information_schema.schemata“.

Das folgende Beispiel zeigt, wie Schemas für Ansichtsnamen und ihre Inhaber dargestellt werden:

SELECT schema_name, schema_owner
  FROM information_schema.schemata
  ORDER BY schema_owner

Diese Anweisung liefert eine Liste von Schemas und Inhabern, die in etwa so aussieht:

public spanner_admin
products  spanner_admin
analytics  spanner_admin
logs  spanner_admin
pg_catalog spanner_system
information_schema spanner_system
spanner_sys   spanner_system

Benanntes Schema löschen

Mit dem Befehl DROP SCHEMA (GoogleSQL und PostgreSQL) wird ein benanntes Schema gelöscht.

  1. Öffnen Sie in der Google Cloud Console die Seite Spanner.

    Spanner aufrufen

  2. Wählen Sie eine Instanz aus der Liste aus.

  3. Wählen Sie eine Datenbank aus.

  4. Klicken Sie im Navigationsmenü auf Spanner Studio.

  5. Neuen Tab durch Klicken auf öffnen Neuer SQL-Editor-Tab oder Neuer Tab:

  6. Geben Sie auf dem Tab Editor Ihre DDL ein.

    GoogleSQL

    Im folgenden Beispiel entfernen wir sch1.

    DROP SCHEMA IF EXISTS sch1;
    

    PostgreSQL

    Im folgenden Beispiel entfernen wir sch1.

    DROP SCHEMA IF EXISTS sch1;
    

Nächste Schritte