Eine SQL-Rolle ist eine benannte Gruppe von Berechtigungen, die mehreren Benutzern zugewiesen werden kann. Statt jedem Benutzer einzeln Rechte mit GRANT zu geben, vergibt man die Rechte einmal an die Rolle und weist dann die Benutzer der Rolle zu.

Rolle anlegen und Rechte vergeben

-- Rolle anlegen (MySQL 8, PostgreSQL, SQL Server, Oracle)
CREATE ROLE redakteur;

-- Rechte an die Rolle vergeben
GRANT SELECT, INSERT, UPDATE ON appdb.* TO redakteur;

-- Benutzer der Rolle zuweisen
GRANT redakteur TO 'max'@'localhost';

Vorteile

  • Zentrale Verwaltung: Eine Änderung an der Rolle wirkt für alle Mitglieder.
  • Übersicht: Rechte sind nach Aufgaben gruppiert statt pro Einzelbenutzer.
  • Onboarding: Neue Mitarbeiter erhalten mit einer Zuweisung den kompletten Rechteumfang.

Unterschiede der Datenbanken

In PostgreSQL sind Benutzer und Rollen dasselbe Konzept: Eine Rolle mit LOGIN-Attribut ist ein Benutzer, ohne LOGIN eine reine Gruppe. MySQL 8 kennt Rollen seit Version 8.0, aktiviert werden sie mit SET DEFAULT ROLE. SQL Server bringt feste Datenbankrollen wie db_datareader und db_datawriter mit und erlaubt eigene Rollen über CREATE ROLE plus ALTER ROLE ... ADD MEMBER. Oracle nutzt Rollen für die Rechtevergabe in Applikationen.

Entzogen werden Rollen-Mitgliedschaften mit REVOKE – zum Beispiel REVOKE redakteur FROM 'max'@'localhost';. Wer Tabellen anlegt und Rechte darauf vergibt, startet mit SQL CREATE TABLE.