======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: