Inhaltsverzeichnis

Benutzer anlegen

Für die Interaktion mit der Datenbank und Datenpflege wird ein dedizierter SQL-Benutzer benötigt. Dieser lässt sich entweder grafisch über das MaxDB-Studio oder über eine SQL-Sitzung mit dem Datenbank-Administratorkonto anlegen.

Zuerst wird eine Verbindung mit der Datenbank hergestellt:

[root@st-db002 ~]# sqlcli -d TESTDB -u DBADMIN,test123

Welcome to the MaxDB interactive terminal.

Type:  \h for help with commands
       \q to quit

Mit dem folgenden SQL-Kommando wird ein Benutzer „christian“ mit dem Passwort „test123“ angelegt:

sqlcli pmc=> CREATE USER christian PASSWORD test123
0 rows affected (19.996 msec)

Der Benutzer hat nun jedoch noch keine Rechte - es wird eine Tabelle „test“ angelegt - der eben angelegte Benutzer erhält dann alle Rechte für diese Tabelle:

sqlcli pmc=> CREATE TABLE TESTDB.test(id FIXED(2), text CHAR(20))
0 rows affected (43.910 msec)

sqlcli pmc=> GRANT ALL ON TESTDB.test TO christian
0 rows affected (42.571 msec)

Im Schema „DOMAIN“ gibt es eine Tabelle „TABLEPRIVILEGES“ - in dieser sind alle erteilten Rechte definiert. Mit dem folgenden Kommando wird überprüft, ob die Rechte übernommen wurden:

sqlcli pmc=> SELECT * FROM DOMAIN.TABLEPRIVILEGES WHERE GRANTEE='CHRISTIAN'
| SCHEMANAME                       | OWNER                            | TABLENAME                        | GRANTOR                          | GRANTEE                          | PRIVILEGE                      | IS_GRANTABLE |
| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | ------------------------------ | ------------ |
| TESTDB                              | DBADMIN                          | TEST                             | DBADMIN                          | CHRISTIAN                        | SELECT                         | NO           |
| TESTDB                              | DBADMIN                          | TEST                             | DBADMIN                          | CHRISTIAN                        | UPDATE                         | NO           |
| TESTDB                              | DBADMIN                          | TEST                             | DBADMIN                          | CHRISTIAN                        | INSERT                         | NO           |
| TESTDB                              | DBADMIN                          | TEST                             | DBADMIN                          | CHRISTIAN                        | DELETE                         | NO           |
| TESTDB                              | DBADMIN                          | TEST                             | DBADMIN                          | CHRISTIAN                        | ALTER                          | NO           |
| TESTDB                              | DBADMIN                          | TEST                             | DBADMIN                          | CHRISTIAN                        | INDEX                          | NO           |
| TESTDB                              | DBADMIN                          | TEST                             | DBADMIN                          | CHRISTIAN                        | REFERENCES                     | NO           |
7 rows selected (67.776 msec)

In diesem Fall wurden für diverse SQL-Befehle entsprechende Rechte vergeben.

In der SQL-Abfrage ist es wichtig den Benutzernamen in CAPS zu definieren - auch wenn der Benutzer als lower-case angelegt wurde!

Funktionstest

Der angelegte Benutzer kann sofort benutzt werden:

[root@st-db002 ~]# sqlcli -d TESTDB -u christian,test123

Welcome to the MaxDB interactive terminal.

Type:  \h for help with commands
       \q to quit

sqlcli TESTDB=> SELECT * FROM TESTDB.test
* 0:
sqlcli TESTDB=> INSERT INTO TESTDB.test (id, text) VALUES ('1', 'Test')
1 row affected (21.469 msec)

sqlcli TESTDB=> INSERT INTO TESTDB.test (id, text) VALUES ('2', 'Bla')
1 row affected (16.784 msec)

sqlcli TESTDB=> SELECT * FROM TESTDB.test
| ID     | TEXT                 |
| ------ | -------------------- |
|      1 | Test                 |
|      2 | Bla                  |
2 rows selected (24.090 msec)

Benutzer löschen

Analog zur Benutzeranlage wird der Benutzer ebenfalls mit dem Datenbank-Administratorkonto gelöscht - die vergebenen Benutzerrechte werden automatisch gelöscht:

[root@st-db002 ~]# sqlcli -d pmc -u DBADMIN,test123

Welcome to the MaxDB interactive terminal.

Type:  \h for help with commands
       \q to quit

sqlcli pmc=> DROP USER christian
0 rows affected (51.197 msec)

sqlcli pmc=> SELECT * FROM DOMAIN.TABLEPRIVILEGES WHERE GRANTEE='CHRISTIAN'
* 0: