## CREATE USER-Anweisung (create_user_statement)

Die CREATE USER-Anweisung (create_user_statement) definiert einen Datenbankbenutzer. Die Existenz und die Eigenschaften des Datenbankbenutzers werden in Form von Metadaten im Datenbankkatalog abgelegt.

### Syntax

<create_user_statement> ::=
CREATE USER <user_name> PASSWORD <password>
[<user_mode>]
[TIMEOUT <unsigned_integer>]
[COSTWARNING <unsigned_integer>]
[COSTLIMIT <unsigned_integer>]
[[NOT] EXCLUSIVE]
[DEFAULTCODE <ASCII_or_UNICODE>]
[<connect_mode>]
| CREATE USER <user_name> PASSWORD <password> LIKE <source_user>
| CREATE USER <user_name> PASSWORD <password> USERGROUP <usergroup_name>

<user_mode> ::= DBA | RESOURCE | STANDARD
<ASCII_or_UNICODE> ::= ASCII | UNICODE
<connect_mode> ::= ENABLE CONNECT | DISABLE CONNECT
<source_user> ::= <user_name>

### Beispiele

SQL-Tutorial, Datenbankbenutzer und ihre Privilegien

### Erläuterung

Der aktuelle Benutzer muss ein Datenbankadministrator (DBA-Benutzer) sein. Er wird Eigentümer des erzeugten Benutzers.

Der angegebene Benutzername darf nicht mit dem Namen eines existierenden Benutzers einer Benutzergruppe, einer Rolle oder eines Schemas übereinstimmen.

Das Kennwort password muss bei der Eröffnung einer Datenbanksitzung angegeben werden. Es stellt sicher, dass nur berechtigte Benutzer Zugang zum Datenbanksystem erhalten.

Die gegebenenfalls angegebenen ganzen Zahlen ohne Vorzeichen unsigned_integer müssen stets größer als 0 sein.

Dem Benutzer steht für die Ablage seiner privaten und temporären Tabellen unbegrenzt viel Plattenplatz zur Verfügung (im Rahmen der bei der Installation angegebenen Größen der Data-Volumes).

#### Datenbankbenutzerklasse

Mittels user_mode wird beim Anlegen eines Datenbankbenutzers die Datenbankbenutzerklasse DBA, RESOURCE oder STANDARD des definierten Benutzers festgelegt. Die Datenbankbenutzerklasse gibt an, welche Operationen der definierte Benutzer ausführen darf.

Wenn bei Definition eines Benutzers keine Datenbankbenutzerklasse angegeben wird, wird implizit STANDARD angenommen.

Die Datenbankbenutzerklassen sind wie folgt ineinander enthalten:

● Die Benutzerklasse RESOURCE schließt alle Rechte ein, die ein STANDARD-Benutzer hat.

● Die Benutzerklasse DBA schließt alle Rechte ein, die ein RESOURCE-Benutzer hat.

● Der Datenbanksystemadministrator (SYSDBA-Benutzer) kann Datenbankbenutzer der Datenbankbenutzerklassen DBA, RESOURCE und STANDARD erzeugen. Er hat Eigentümerrechte an allen Benutzern. Der Datenbanksystemadministrator die gleiche Funktion und die gleichen Rechte wie ein DBA-Benutzer.

#### TIMEOUT

Die Angabe des Timeout-Werts erfolgt in Sekunden und muss im Bereich von 30 und 32400 liegen.

Nur der Datenbanksystemadministrator (SYSDBA-Benutzer) darf Benutzer mit dem Timeout-Wert 0 definieren.

#### COSTWARNING/COSTLIMIT

Mit diesen Angaben kann verhindert werden, dass ein Benutzer beliebig komplizierte und damit kostenintensive QUERY-Anweisungen oder INSERT-Anweisungen der Form INSERT...SELECT... ausführen kann.

Vor Ausführung einer dieser SQL-Anweisungen werden die durch die Ausführung zu erwartenden Kosten geschätzt. Dieser SELECT-Kosten-Schätzwert kann mit der EXPLAIN-Anweisung ausgegeben werden. Der SELECT-Kosten-Schätzwert wird im interaktiven Betrieb mit den für den Benutzer angegebenen Werten für COSTWARNING und COSTLIMIT verglichen.

Für QUERY-Anweisungen oder INSERT-Anweisungen der Form INSERT...SELECT..., die in eine Programmiersprache eingebettet sind, werden die Werte COSTWARNING und COSTLIMIT nicht beachtet.

● COSTWARNING: Dieser Wert gibt an, ab welchem SELECT-Kosten-Schätzwert der Benutzer eine Warnung erhält. Im Falle einer Warnung wird der Benutzer gefragt, ob die SQL-Anweisung wirklich ausgeführt werden soll.

● COSTLIMIT: Dieser Wert gibt an, ab welchem SELECT-Kosten-Schätzwert die SQL-Anweisung nicht ausgeführt wird.

Der COSTLIMIT-Wert muss größer als der COSTWARNING-Wert sein.

#### EXCLUSIVE

Wenn die EXCLUSIVE-Bedingung nicht angegeben wird, dann wird implizit NOT EXCLUSIVE angenommen.

● EXCLUSIVE: Es ist nicht möglich, gleichzeitig zwei verschiedene Datenbanksitzungen des Benutzers zu eröffnen.

● NOT EXCLUSIVE: Es ist möglich, gleichzeitig mehrere Datenbanksitzungen des Benutzers zu eröffnen.

#### DEFAULTCODE ASCII, DEFAULTCODE UNICODE

Für die Objekte des angegebenen Benutzers wird der Wert des speziellen Datenbankparameters DEFAULT_CODE mit dem in DEFAULTCODE angegebenen Codeattribut übersteuert.

#### LIKE

Der aktuelle Benutzer muss das Eigentümerrecht an dem Quellbenutzer source_user besitzen.

Wenn der Quellbenutzer nicht Mitglied einer Benutzergruppe ist, dann erhält der neu definierte Benutzer die gleiche Benutzerklasse und die gleichen Werte für TIMEOUT, COSTWARNING, COSTLIMIT und für die EXCLUSIVE-Angabe wie der Quellbenutzer. Der neu definierte Benutzer erhält alle Privilegien, die der Quellbenutzer von anderen Benutzern verliehen bekommen hat.

Wenn der Quellbenutzer Mitglied einer Benutzergruppe ist, dann wird ein neues Mitglied dieser Benutzergruppe mit dem neu definierten Benutzernamen definiert.

#### USERGROUP

Der die SQL-Anweisung absetzende Benutzer muss Eigentümer der angegebenen Benutzergruppe sein. Der neu definierte Benutzer wird Mitglied dieser Benutzergruppe.

Siehe auch:

CREATE USERGROUP-Anweisung (create_usergroup_statement)

#### ENABLE CONNECT, DISABLE CONNECT

Mittels connect_mode definieren Sie, ob ein Benutzer Datenbanksitzungen eröffnen kann.

Wenn kein CONNECT-Modus angegeben ist, wird implizit ENABLE CONNECT angenommen. ENABLE und DISABLE dürfen nicht gleichzeitig angeben sein.

● ENABLE CONNECT: Der Benutzer kann Datenbanksitzungen eröffnen.

● DISABLE CONNECT: Der Benutzer kann keine Datenbanksitzungen eröffnen.

Siehe auch:

Konzepte des Datenbanksystems, Authentifizierung