... | ... | @@ -32,26 +32,33 @@ GRANT CONNECT ON DATABASE stmamust TO foo; |
|
|
|
|
|
## Erstellen des Schemas
|
|
|
|
|
|
Mit dem folgenden Befehl erstellen Sie ein Schema mit dem Namen *foo* und vergeben das Besitzrecht an den Benutzer mit dem Namen *foo*:
|
|
|
Mit den folgenden beiden Befehlen erstellen Sie ein Schema mit dem Namen *foo* und vergeben das Besitzerrecht an den Benutzer mit dem Namen *foo*. Der erste Befehl ist notwendig, um Ihren st* Benutzer das Recht zu geben, ein Schema im Namen des funktionalen Benutzers zu erzeugen:
|
|
|
```sql
|
|
|
GRANT foo TO stmamust;
|
|
|
CREATE SCHEMA foo AUTHORIZATION foo;
|
|
|
```
|
|
|
**Hinweis**: Es ist evtl. noch notwendig, dem Benutzer *stmamust* das Recht zu geben, eine Schema für die Rolle *foo* zu erzeugen. Dann müssen Sie **vor** dem `CREATE SCHEMA` noch folgenden Befehl ausführen:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Sie sollten den Namen des Schemas identisch zum Namen des funktionalen Benutzers wählen. Hintergrund ist, dass standardmäßig beim Einloggen zuerst das Schema verwendet wird, welches dem Namen des Benutzers entspricht. Existiert ein solches Schema nicht, so wird das *public* Schema verwendet. Die Reihenfolge können Sie auch alternativ nach jedem Login festlegen. Weitere Informationen finden Sie in der [Postgres Doku](https://www.postgresql.org/docs/current/ddl-schemas.html#DDL-SCHEMAS-PATH).
|
|
|
|
|
|
Deutlich komfortabler als das ständige Angeben des Suchpfades ist allerdings das oben genannte Vorgehen, das Schema einfach identisch zu benennen.
|
|
|
|
|
|
### Variante: **Kein** neues Schema erstellen, sondern bestehendes Schema verwenden
|
|
|
|
|
|
Sie können auch ein bestehendes Schema verwenden anstatt ein neues anzulegen. Dann allerdings müssen Sie den Suchpfad anpassen oder aber Ihre Tabellen mit dem voll qualifizierten Namen *Schema.Tabelle* adressieren. Daher ist diese Variante nicht empfohlen!
|
|
|
|
|
|
Zunächst wird dem funktionalen Benutzer das Recht gegeben, auf das Schema zuzugreifen:
|
|
|
```sql
|
|
|
GRANT foo TO stmamust;
|
|
|
GRANT USAGE ON SCHEMA stmamust TO foo;
|
|
|
```
|
|
|
|
|
|
Berechtigungen auf alle Tabellen in einem Schema vergeben Sie wie folgt:
|
|
|
|
|
|
```sql
|
|
|
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA stmamust TO foo;
|
|
|
```
|
|
|
|
|
|
Sie sollten den Namen des Schemas identisch zum Namen des funktionalen Benutzers wählen. Hintergrund ist, dass standardmäßig beim Einloggen zuerst das Schema verwendet wird, welches dem Namen des Benutzers entspricht. Existiert ein solches Schema nicht, so wird das *public* Schema verwendet. Die Reihenfolge können Sie auch alternativ nach jedem Login festlegen. Weitere Informationen finden Sie in der [Postgres Doku](https://www.postgresql.org/docs/current/ddl-schemas.html#DDL-SCHEMAS-PATH).
|
|
|
|
|
|
Deutlich komfortabler als das ständige Angeben des Suchpfades ist allerdings das oben genannte Vorgehen, das Schema einfach identisch zu benennen.
|
|
|
**Hinweis:** Diesen Schritt müssen Sie unter Umständen wiederholen, wenn Tabellen durch einen anderen Benutzer, bspw. Ihren st* Benutzer, neu erzeugt wurden!
|
|
|
|
|
|
## Login mit dem funktionalen Benutzer
|
|
|
|
... | ... | |