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.
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)
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: