Dies ist eine alte Version des Dokuments!
LU12c: MySQL – Rollen & Berechtigungen im Notenbuch
Lernziele dieser Seite
Sie können …
- in einer einfachen Noten-Datenbank zwei sinnvolle Rollen definieren (Administration und Lernende).
- mit den Befehlen
CREATE USER,CREATE ROLE,GRANT,SHOW GRANTSin MySQL umgehen. - erklären, wie das Prinzip der minimalen Privilegien mit Rollen umgesetzt werden kann.
Ausgangslage: Noten-Datenbank
Stellen Sie sich eine Datenbank noten_db vor, in der die Noten aller Lernenden gespeichert sind. Eine zentrale Tabelle dafür ist grades.
CREATE DATABASE noten_db; USE noten_db; CREATE TABLE grades ( id INT AUTO_INCREMENT PRIMARY KEY, student_id INT NOT NULL, subject_id INT NOT NULL, grade DECIMAL(3,1) NOT NULL, graded_at DATE NOT NULL, CONSTRAINT fk_grades_student FOREIGN KEY (student_id) REFERENCES students(id) ON DELETE CASCADE, CONSTRAINT fk_grades_subject FOREIGN KEY (subject_id) REFERENCES subjects(id) ON DELETE CASCADE );
In dieser Tabelle liegen besonders schützenswerte Personendaten (Leistungsbeurteilungen). Entsprechend wichtig ist eine saubere Rechtevergabe.
Schritt 1: Zwei Rollen definieren
Wir arbeiten bewusst nur mit zwei Rollen:
- eine Admin-Rolle für die vollständige Verwaltung der Noten-Datenbank,
- eine Rolle für Lernende, die alle Noten lesen dürfen (aber nichts verändern).
| Rolle | Zweck | Typische Rechte |
|---|---|---|
db_admin | Verwaltung der gesamten Noten-Datenbank | alle Rechte auf noten_db.* |
lernende_role | Lernende sehen alle Noten (Leserechte) | SELECT auf Tabellen in noten_db |
Zuerst werden die Rollen in MySQL angelegt:
CREATE ROLE db_admin; CREATE ROLE lernende_role;
Schritt 2: Rechte an Rollen vergeben (GRANT)
Nun legen Sie fest, was die beiden Rollen genau dürfen.
Rolle ''db_admin'' – volle Kontrolle über ''noten_db''
GRANT ALL PRIVILEGES ON noten_db.* TO db_admin WITH GRANT OPTION;
Die Rolle db_admin kann damit:
- Tabellen anlegen, ändern, löschen,
- alle Noten lesen, ändern und löschen,
- Rechte an andere vergeben.
Rolle ''lernende_role'' – Noten lesen, aber nichts verändern
Alle Lernenden sollen alle Noten sehen können, aber keine Noten verändern oder löschen. Dafür erhält die Rolle nur Leserechte (SELECT).
GRANT SELECT ON noten_db.* TO lernende_role;
Damit gilt:
lernende_roledarf alle Daten innoten_dblesen,- aber keine Datensätze einfügen, ändern oder löschen,
- und auch keine Tabellenstruktur verändern.
Sie setzen damit das Prinzip der minimalen Privilegien um: Lernende dürfen genau das, was sie für ihren Zweck benötigen – nicht mehr.
Schritt 3: Zwei MySQL-Benutzer erstellen
Jetzt legen Sie genau zwei MySQL-Benutzer an:
noten_admin– Admin-Benutzer der Noten-Datenbank,lernende– gemeinsamer Benutzer für Lernende (für das Unterrichtsbeispiel ist es in Ordnung, dass alle Lernenden darüber alle Noten sehen).
CREATE USER 'noten_admin'@'%' IDENTIFIED BY 'Admin!2025'; CREATE USER 'lernende'@'%' IDENTIFIED BY 'Lernende!2025';
In der Praxis sollten Sie selbstverständlich stärkere und individuelle Passwörter verwenden. Hier geht es um das Prinzip.
Schritt 4: Rollen an Benutzer zuweisen
Im nächsten Schritt weisen Sie den Benutzern ihre Rollen zu:
GRANT db_admin TO 'noten_admin'@'%'; GRANT lernende_role TO 'lernende'@'%';
Damit gilt:
noten_adminarbeitet mit allen Rechten der Rolledb_admin,lernendearbeitet mit den Leserechten der Rollelernende_role.
Wenn Sie später eine weitere Lehrperson oder einen weiteren Admin hinzufügen, müssen Sie nur einen neuen Benutzer erstellen und ihm oder ihr die passende Rolle zuweisen.
Schritt 5: Rechte kontrollieren (SHOW GRANTS)
Mit SHOW GRANTS können Sie überprüfen, welche Rechte ein Benutzer effektiv besitzt.
SHOW GRANTS FOR 'noten_admin'@'%'; SHOW GRANTS FOR 'lernende'@'%';
Sie sehen dort, welche Rollen zugewiesen wurden und welche Privilegien diese Rollen enthalten.
Verbindung zu Datenschutz (DSG/DSGVO)
Mit diesen zwei Rollen und zwei MySQL-Benutzern setzen Sie zentrale Datenschutzprinzipien um:
- Schutz vor unbefugtem Zugriff
- Nur die Benutzer
noten_adminundlernendehaben Zugriff auf die Noten-Datenbank.
- Prinzip der minimalen Privilegien
noten_admindarf alles, trägt aber auch volle Verantwortung.lernendedarf nur lesen (SELECT), keine Noten verändern.
- Vertraulichkeit und Integrität
- Strukturänderungen und Rechteverwaltung sind auf die Admin-Rolle beschränkt.
- Lernende können keine Noten manipulieren, sondern nur ansehen.
So entsteht aus wenigen, klar definierten Rollen und Benutzern ein übersichtliches und datenschutzkonformes Berechtigungskonzept für eine Noten-Datenbank.