SQL GRANT ist das Kommando der Data Control Language (DCL), mit dem eine Datenbank Benutzern und Rollen Zugriffsrechte erteilt. Ohne GRANT kann niemand außer dem Datenbank-Administrator Tabellen lesen, Daten ändern oder neue Objekte anlegen.

Syntax und Beispiele

-- Rechte auf eine Tabelle vergeben
GRANT SELECT ON kunden TO 'leser'@'localhost';

-- Mehrere Rechte auf eine Datenbank
GRANT SELECT, INSERT, UPDATE ON appdb.* TO 'redakteur'@'localhost';

-- Alle Rechte (Administrator)
GRANT ALL PRIVILEGES ON appdb.* TO 'app'@'localhost';

Wichtige Privilegien

  • SELECT: Daten lesen
  • INSERT / UPDATE / DELETE: Daten schreiben und entfernen
  • CREATE / DROP / ALTER: Tabellen und andere Objekte anlegen, löschen oder ändern
  • GRANT OPTION: Erlaubt dem Empfänger, seine Rechte an andere weiterzugeben

Ebenen der Rechtevergabe

MySQL und MariaDB unterscheiden globale Rechte (*.*), Datenbank-Rechte (appdb.*) und Tabellen-Rechte (appdb.kunden). PostgreSQL und Oracle vergeben zusätzlich Rechte auf Spaltenebene. In PostgreSQL existiert die spezielle Rolle PUBLIC, an die Rechte für alle Benutzer gleichzeitig vergeben werden können.

Rechte anzeigen

SHOW GRANTS FOR 'leser'@'localhost';

Wer Rechte wieder entzieht, nutzt das Gegenstück REVOKE. Wer gleichartige Rechte an viele Benutzer vergeben will, bündelt sie in Rollen. Grundlagen zu Tabellen und Schlüsseln finden Sie in SQL CREATE TABLE und Primär- und Fremdschlüssel.