## GRANT-Anweisung (grant_statement)

Die GRANT-Anweisung (grant_statement) vergibt Privilegien für Tabellen, einzelne Spalten, Rollen und Schemas, das SELECT-Privileg für Sequenzen und das Ausführungsprivileg (EXECUTE-Privileg) für Datenbankprozeduren oder Datenbankfunktionen.

### Syntax

<grant_statement> ::= GRANT <priv_spec>,... TO <grantee>,... [WITH GRANT OPTION]
| GRANT <schema_priv_spec> TO <grantee>,...
| GRANT EXECUTE ON <dbproc_name> TO <grantee>,...
| GRANT EXECUTE ON <dbfunction_name> TO <grantee>,...
| GRANT SELECT ON <sequence_name> TO <grantee>,... [WITH GRANT OPTION]

<grantee> ::= <user_name> | <usergroup_name> | <role_name> | PUBLIC

### Beispiele

SQL-Tutorial, Datenbankbenutzer und ihre Privilegien, Rollen

### Erläuterung

Die in der Privilegienspezifikation (priv_spec bzw. schema_priv_spec) aufgezählten Privilegien werden an die in der grantee-Liste genannten Datenbankbenutzer, Benutzergruppen und Rollen vergeben.

#### <grantee>

Der Eigentümer eines Objekts, für das Privilegien vergeben werden, darf nicht in der grantee-Liste enthalten sein. Ein Datenbankbenutzer, der in der grantee-Liste erscheint, darf kein Mitglied einer Benutzergruppe bezeichnen.

##### <role_name>

Wenn eine Rolle an einen Datenbankbenutzer oder eine Benutzergruppe vergeben wird, erweitert sie die Menge der für diesen Datenbankbenutzer bzw. diese Benutzergruppe aktivierbaren Rollen. Die Aktivierung durch den Datenbankbenutzer erfolgt entweder mit Hilfe der SET-Anweisung oder durch Aufnahme der Rolle in die Menge der beim Eröffnen einer Sitzung automatisch aktivierten Rollen durch die ALTER USER-Anweisung oder ALTER USERGROUP-Anweisung.

Wenn eine Rolle an eine Rolle vergeben wird, dann darf hierdurch kein Zyklus entstehen, d.h.

● eine Rolle darf nicht an sich selbst vergeben werden.

● wenn eine Rolle R1 an eine Rolle R2 vergeben wurde, dann darf R2 nicht an R1 vergeben werden.

● wenn eine Rolle R1 an R2 und R2 an eine Rolle R3 vergeben wurde, dann darf R3 weder an R2 noch an R1 vergeben werden.

● usw.

##### PUBLIC

Die aufgeführten Privilegien werden an alle zu diesem und zu einem späteren Zeitpunkt existierenden Datenbankbenutzer vergeben.

Eine Rolle kann nicht an PUBLIC vergeben werden.

#### WITH GRANT OPTION

Dem durch grantee identifizierten Benutzer bzw. der durch grantee identifizierten Benutzergruppe wird erlaubt, die erhaltenen Privilegien an andere Benutzer weiterzugeben. Der aktuelle Benutzer muss die Berechtigung besitzen, die Privilegien zur Weitergabe zu vergeben.

Die Angabe von WITH GRANT OPTION ist nicht zulässig, wenn durch grantee eine Rolle angegeben ist.

#### GRANT <schema_priv_spec>

Durch GRANT CREATEIN ON wird dem durch grantee identifizierten Benutzer die Berechtigung gegeben, Datenbankobjekte im angegebenen Schema zu erzeugen.

Durch GRANT DROPIN ON wird dem durch grantee identifizierten Benutzer die Berechtigung gegeben, Datenbankobjekte im angegebenen Schema zu löschen.

#### GRANT EXECUTE ON

GRANT EXECUTE ON erlaubt dem durch grantee identifizierten Benutzer die Ausführung der angegebenen Datenbankprozedur oder Datenbankfunktion. Der aktuelle Benutzer muss Eigentümer der Datenbankprozedur oder Datenbankfunktion sein.

#### GRANT SELECT ON

GRANT SELECT ON erlaubt dem durch grantee identifizierten Benutzer die Verwendung der angegebenen Sequenz.

Siehe auch:

Privilegien: Überblick