Hinzufügen von Benutzern zu einer PostgreSQL-Datenbank

PostgreSQL verwendet Rollen für die Anmeldung am Datenbank-Cluster und an den Datenbanken. Diese Rollen fügen Sie dem PostgreSQL-Datenbank-Cluster hinzu.

Einzelne Datenbankbenutzer werden als Anmelderollen bezeichnet. Zudem müssen Sie für alle Anmelderollen, die Eigentümer von Objekten in der Geodatabase sind, ein Schema in dieser Datenbank erstellen. Das Schema muss den gleichen Namen wie die Anmelderolle haben und sich in deren Eigentum befinden.

Sie können alternativ auch Gruppenrollen erstellen, denen die Anmelderollen hinzugefügt werden. Auf diese Weise können Sie Berechtigungen für die Gruppe festlegen, die für alle zugehörigen Anmelderollen gelten.

HinweisHinweis:

Sie müssen jedoch weiterhin ein passendes Schema für jede Anmelderolle in der Gruppe erstellen, die Eigentümer von Objekten in der Geodatabase ist. Sie können kein Schema für die Gruppenrolle erstellen.

Sie können eine Rolle im PostgreSQL-Datenbank-Cluster mithilfe einer PostgreSQL-Anwendung erstellen, z. B. mit pgAdmin III oder PL/pgSQL. Die folgenden Anweisungen veranschaulichen, wie Sie eine Rolle, ein Schema und eine Gruppe mit PL/pgSQL erstellen und wie Sie der Rolle oder Gruppe Berechtigungen erteilen.

TippTipp:

Im Verzeichnis SDEHOME > tools > postgres ist ein SQL-Skript mit dem Namen "roles_schemas_privileges.sql" installiert. Dieses Skript kann geändert und verwendet werden, um Benutzer und die zugehörigen Schemas zu erstellen sowie um Berechtigungen in der Datenbank zu gewähren.

Schritte:
  1. Melden Sie sich bei PL/pgSQL als Benutzer mit der Berechtigung zum Erstellen anderer Rollen im DBMS an. Dies ist normalerweise der Superuser "postgres".
  2. Führen Sie den Befehl CREATE ROLE aus.

    In diesem Beispiel wird eine Anmelderolle namens "role4u" mit einem verschlüsselten Kennwort erstellt. Die Rolle kann Objekte in der Datenbank erstellen, ist aber kein Superuser, übernimmt keine Berechtigungen von Gruppen und kann keine Rollen im Datenbank-Cluster erstellen.

    CREATE ROLE role4u LOGIN 
    ENCRYPTED PASSWORD 'super.secret' 
    NOSUPERUSER NOINHERIT CREATEDB NOCREATEROLE;

    TippTipp:

    Wenn Sie bereits im Voraus wissen, dass Sie diese Anmelderolle einer Gruppe zuweisen möchten, erstellen Sie diese mit INHERIT Berechtigungen.

  3. Führen Sie den Befehl CREATE SCHEMA aus, um ein Schema für die Anmelderolle in der Datenbank zu erstellen, in der die Geodatabase gespeichert ist.

    In diesem Beispiel wird das entsprechende Schema "role4u" erstellt, und die Anmelderolle "role4u" wird für das Schema autorisiert:

    CREATE SCHEMA role4u AUTHORIZATION role4u;

  4. Gewähren Sie der Anmelderolle die Berechtigungen USAGE und CREATE für das Schema.

    Dies ist erforderlich, damit der Benutzer Protokolldateitabellen erstellen kann. Weitere Informationen zu Protokolldateitabellen finden Sie unter Konfigurationsoptionen für Protokolldateitabellen in PostgreSQL-Geodatabases.

    GRANT USAGE ON SCHEMA role4u TO role4u;
    GRANT CREATE ON SCHEMA role4u TO role4u;
  5. Weisen Sie allen anderen Anmelde- oder Gruppenrollen, die auf die Daten im Benutzerschema zugreifen müssen, die Berechtigung USAGE für das Schema zu. In diesem Beispiel wird der öffentlichen Gruppe die Berechtigung USAGE erteilt, damit alle Benutzer, die eine Verbindung mit der Datenbank herstellen, auf die Daten im Schema "role4u" zugreifen können:
    GRANT USAGE ON SCHEMA role4u TO public;
  6. Wenn Sie die Anmelderolle einer Gruppe hinzufügen möchten, um die Berechtigungen zu steuern, erstellen Sie eine Gruppenrolle.

    Sie können beispielsweise eine Gruppe für alle Anmelderollen erstellen, die Daten in der Geodatabase erstellen. Hier lautet der Name der Gruppenrolle "dataowner":

    CREATE ROLE dataowner 
    NOSUPERUSER NOINHERIT CREATEDB NOCREATEROLE;
  7. Gewähren Sie der allen relevanten Anmelderollen die Gruppenrollenberechtigungen.

    In diesem Beispiel werden der Anmelderolle "role4u" die Gruppenrollenberechtigungen erteilt. Sie können diese Abweisung für beliebige andere Anmelderollen ausführen, die Sie der Gruppe hinzufügen möchten.

    GRANT dataowner TO role4u;
  8. Wenn die Anmelderolle ohne die Fähigkeit erstellt würde, Berechtigungen von einer Gruppe abzuleiten (wie dies in den Beispielen dieses Themas der Fall ist), aktivieren Sie die Ableitung von Gruppenberechtigungen aus den zugewiesenen Gruppen für die Anmelderolle.
    ALTER ROLE role4u INHERIT;
  9. Wenn Sie Gruppen verwenden, können Sie der Gruppe Berechtigungen für andere Datasets erteilen. Gewähren Sie andernfalls einzelnen Anmelderollen die Berechtigungen.

    In diesem Beispiel werden der Gruppe "dataowner" Berechtigungen für die Tabellen "geometry_columns" und "spatial_ref_sys" im Schema "public" gewährt. Diese Berechtigungen sind für alle Benutzer erforderlich, die Daten erstellen, die die PostGIS-Geometriespeicherung verwenden.

    GRANT SELECT, INSERT, UPDATE, DELETE 
    ON public.geometry_columns 
    TO dataowner;
    
    GRANT SELECT 
    ON public.spatial_ref_sys 
    TO dataowner;

7/10/2012