Seitenleiste

Community

SQL

Grundlagen

Datenbanksysteme

Client/Server

Eingebettet

Data Control Language

Diese Kategorie der SQL-Befehle erlaubt es uns, die Zugriffsrechte für Datenbankobjekte zu regeln. Nicht alle Datenbanksysteme unterstützen Benutzerberechtigungen. Für SQLite ist diese Seite z. B. nicht relevant. Dieser Bereich ist für Mehrbenutzersysteme und sicherheitskritische Bereiche besonders wichtig. Es ist zu beachten, dass es sich hier um eine Einführung ins Thema handelt und nicht um ein umfassendes Lehrwerk. Bei sicherheitskritischen Anwendungen ist es ratsam sich sehr genau mit dem Thema auseinander zu setzen!

Rechte gewähren

Wenn man beispielsweise eine Tabelle für alle Benutzer lesend freigeben will, würde man folgenden Befehl benutzen:

GRANT SELECT ON Tabellenname TO PUBLIC;

Um einem einzelnen Benutzer das Recht zu geben in einer Tabelle Daten hinzuzufügen und Daten zu verändern, könnte man so vorgehen:

GRANT INSERT,UPDATE ON TABLE Tabellenname TO Username;

Die grundlegende Syntax lautet für diesen Befehl also:

GRANT Operation ON Objekt TO Benutzer; [WITH GRANT OPTION]

Operation kann die Werte SELECT,INSERT, UPDATE und DROP annehmen. Objekt steht hier für die Tabelle. Benutzer kann entweder den Wert PUBLIC(für jeden Benutzer)annehmen oder einen User bzw. eine Benutzergruppe bezeichnen. Durch die Option „[WITH GRANT OPTION]“ kann ein User berechtigt werden seine Rechte weiterzugeben. In modernen Datenbankmanagmentsystemen können Rechte auf weit mehr Dinge vergeben werden, als nur auf Tabellen. Beispielsweise können auch Ausführungsrechte für Prozeduren enthalten sein.

Rechte entziehen

Die Syntax für das Entziehen der Rechte ist eng verwandt:

REVOKE Operation ON Objekt FROM Benutzer;

Es können die gleichen Optionen wie für die Rechtegewährung eingesetzt werden, mit Ausnahme der „[WITH GRANT OPTION]“, schließlich würde sie in diesem Zusammenhang keinen Sinn ergeben.

Zu beachten ist noch, dass die Rechteverwaltung in SQL einem eindeutigen Standard folgt. Bei der Benutzerverwaltung ist das Gegenteil der Fall, diese ist nicht standardisiert und dementsprechend bei jedem Datenbanksystemhersteller anders gelöst.