Dies ist eine alte Version des Dokuments!
Ja, ein Notenbuch-Beispiel passt fachlich sehr gut zu Ihren Schul-Szenarien und vermeidet die Verwechslung mit dem Reiseblog und den gleichen Usernamen.
Hier eine vereinfachte, komplett neue Version der Seite 3 – mit nur zwei Rollen und zwei Datenbank-Usern, klar getrennt von den Anwendungs-Usern (Lehrpersonen/Lernende):
—
LU12c: MySQL – Rollen & Berechtigungen im Notenbuch
Lernziele dieser Seite
Sie können …
* den Unterschied zwischen Anwendungsbenutzer und Datenbankbenutzer erklären.
* mit den Befehlen CREATE USER, GRANT, REVOKE, CREATE ROLE in MySQL arbeiten.
* für ein Notenbuch-Beispiel mit genau zwei Rollen und zwei Benutzern ein einfaches, DSG/DSGVO-konformes Berechtigungskonzept erstellen.
—
Anwendungsbenutzer vs. Datenbankbenutzer
Stellen Sie sich ein Notenbuch-Tool der Schule vor:
* Als Anwendungsbenutzer gibt es z. B.:
- Lehrpersonen (sehen und erfassen Noten für ihre Fächer),
- Lernende (sehen ihre eigenen Noten),
- Verwaltung / Schulleitung (übergeordnete Auswertungen).
Diese Anwendungsbenutzer werden in einer eigenen Tabelle geführt, z. B. noten_app_users. Das sind keine MySQL-Benutzerkonten.
| id | username | rolle |
|---|---|---|
| 1 | g.koch | lehrperson |
| 2 | l.mueller | lernende |
| 3 | v.meier | verwaltung |
MySQL-Benutzerkonten werden hingegen im System mysql.user gespeichert und heissen z. B.:
* 'noten_admin'@'%'
* 'noten_app'@'localhost'
Wichtig:
* Tabellen wie noten_app_users gehören zur Anwendungsebene (Wer darf sich im Web-Notenbuch anmelden?).
* Einträge in mysql.user gehören zur Datenbankebene (Welche technischen Accounts dürfen direkt mit MySQL sprechen?).
Diese Trennung ist entscheidend für Datenschutz (DSG/DSGVO) und Datensicherheit.
—
Best Practice: ''root'' nur für Administration
Der Benutzer root wird bei der MySQL-Installation automatisch erstellt.
* root hat volle Kontrolle über den Server (alle Datenbanken, alle Tabellen, alle Benutzer).
* Anwendungen sollten niemals mit root arbeiten.
Besser ist:
* eine Admin-Benutzerkennung nur für die Datenbankverwaltung (z. B. noten_admin),
* eine technische Benutzerkennung für die Anwendung (z. B. noten_app), die nur die minimal nötigen Rechte erhält.
So setzen Sie das Prinzip der minimalen Privilegien (Need-to-know) um, wie es DSG/DSGVO verlangen.
—
Schritt 1: Noten-Datenbank vorbereiten
Annahme: Sie haben eine Datenbank noten_db mit den Tabellen:
* students (Lernende),
* subjects (Fächer),
* grades (Noten).
Eine mögliche Struktur für grades könnte so aussehen:
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 );
Damit ist klar, wo die personenbezogenen Daten (Noten) gespeichert werden – ein klassischer Fall für DSG/DSGVO-Schutz.
—
Schritt 2: Zwei Rollen definieren
Wir arbeiten bewusst nur mit zwei Rollen auf Datenbankebene:
* eine Admin-Rolle für die verantwortliche Person, * eine Anwendungsrolle für den technischen Zugriff der Notenbuch-App.
Rolle 1: ''db_admin'' – Datenbank-Administration
* volle Rechte auf noten_db.*,
* darf Berechtigungen weitergeben (GRANT OPTION).
Gedacht für: eine verantwortliche Person (z. B. IT-Verantwortliche/r oder Datenbank-Admin).
Rolle 2: ''grades_app'' – Notenbuch-Anwendung
* SELECT, INSERT, UPDATE, DELETE auf allen Tabellen in noten_db,
* keine Rechte, die Struktur zu ändern (kein CREATE TABLE, kein DROP),
* keine Rechte, Berechtigungen zu vergeben.
Gedacht für: den technischen Benutzer der Webanwendung (z. B. das spätere Node.js/Express-Backend).
Rollen in MySQL anlegen
CREATE ROLE db_admin; CREATE ROLE grades_app;
Merksatz:
* Vergeben Sie Berechtigungen wenn möglich an Rollen, nicht direkt an Benutzer. * Benutzer bekommen danach nur noch Rollen zugewiesen – das ist übersichtlicher und wartbarer.
—
Schritt 3: Rechte an Rollen vergeben (GRANT)
Nun hinterlegen Sie bei jeder Rolle, was sie darf.
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, * Daten lesen, schreiben, löschen, * Berechtigungen vergeben.
Sie entspricht ungefähr der Schulleitung / IT-Verwaltung im Schulkontext, die auf alle Noten zugreifen darf.
Rolle ''grades_app'' – Lesen und Schreiben, aber keine Strukturänderungen
GRANT SELECT, INSERT, UPDATE, DELETE ON noten_db.* TO grades_app;
Die Rolle grades_app darf:
* Noten lesen (SELECT),
* neue Noten eintragen (INSERT),
* Noten korrigieren (UPDATE),
* Noten löschen (DELETE – falls fachlich erlaubt).
Sie darf aber keine Tabellen anlegen oder löschen und keine Rechte vergeben. Damit bleibt der mögliche Schaden bei einem Fehler oder Angriff begrenzt – ganz im Sinne der Risikominimierung nach DSG/DSGVO.
—
Schritt 4: Zwei Datenbank-Benutzer erstellen
Jetzt legen Sie genau zwei MySQL-Benutzer an:
* noten_admin – Admin-Benutzer der Datenbank,
* noten_app – technischer Benutzer für die Notenbuch-Anwendung.
Benutzer anlegen (CREATE USER)
CREATE USER 'noten_admin'@'%' IDENTIFIED BY 'Admin!2025'; CREATE USER 'noten_app'@'localhost' IDENTIFIED BY 'NotenApp!2025';
Hinweise:
* 'noten_admin'@'%' → kann sich von verschiedenen Standorten verbinden (z. B. bei Wartung über VPN).
* 'noten_app'@'localhost' → darf nur vom Server selbst auf MySQL zugreifen (typisch für eine Webanwendung).
* In der Praxis sollten Sie starke, individuelle Passwörter benutzen.
Rollen an Benutzer zuweisen (GRANT … TO)
GRANT db_admin TO 'noten_admin'@'%'; GRANT grades_app TO 'noten_app'@'localhost';
Damit gilt:
* noten_admin
- hat über die Rolle
db_admindie volle Verantwortung für die Datenbanknoten_db, - vergleichbar mit der IT-Verantwortung oder Schulleitung im Noten-Kontext.
* noten_app
- ist ein reiner Service-Account für die Webanwendung,
- arbeitet mit der Rolle
grades_appund damit nur mit den Rechten, die die App wirklich braucht.
Die eigentlichen Lehrpersonen/Lernenden loggen sich in der Web-App ein – die App selbst verbindet sich im Hintergrund mit MySQL als noten_app.
—
Schritt 5: Rechte kontrollieren (SHOW GRANTS)
Mit SHOW GRANTS können Sie prüfen, welche Rechte ein Benutzer effektiv besitzt:
SHOW GRANTS FOR 'noten_admin'@'%'; SHOW GRANTS FOR 'noten_app'@'localhost';
Im Unterricht können Sie so sehr gut zeigen:
* noten_admin → sehr viele Rechte (Adminrolle),
* noten_app → nur eingeschränkte Rechte (Approlle).
Wenn sich später etwas ändert (z. B. andere Person übernimmt die Administration), können Sie:
* einen neuen Benutzer anlegen (z. B. noten_admin2),
* die Rolle db_admin vom alten Benutzer entziehen und dem neuen zuweisen.
Die Struktur bleibt sauber, ohne die Anwendung anfassen zu müssen.
—
Verbindung zu DSG/DSGVO & Schulbeispielen
Mit diesen zwei Rollen und zwei Datenbank-Benutzern setzen Sie bereits zentrale Datenschutzprinzipien um:
* Schutz vor unbefugtem Zugriff
- Nur klar definierte technische Accounts (
noten_admin,noten_app) dürfen auf die Notendaten zugreifen.
* Prinzip der minimalen Privilegien
- Die Webanwendung arbeitet nicht mit
root, sondern mitnoten_appund Rollegrades_app. - Strukturänderungen und Berechtigungsverwaltung sind nur über
noten_adminmöglich.
* Vertraulichkeit und Integrität
- Noten (sensible Personendaten) liegen in einer klar abgegrenzten DB (
noten_db) mit begrenztem Zugriff.
Die Logik entspricht exakt den Schulbeispielen:
* Im Notenbuch-Tool: Lehrpersonen erfassen Noten, Lernende sehen nur ihre eigenen, Verwaltung/Schulleitung hat den Überblick.
* In MySQL: noten_app repräsentiert die Anwendung, noten_admin repräsentiert die technische/organisatorische Verantwortung.
In den früheren Lerneinheiten haben Sie modelliert und abgefragt, was in der Datenbank gespeichert wird. Hier geht es darum, wer was tun darf – der Kern von Handlungsziel 6:
*Rollen und Berechtigungen vergeben, um Datensicherheit und Datenschutz (DSG/DSGVO) zu gewährleisten.*
- modul/m290_guko/learningunits/lu12/theorie/c_mysql_rollen_berechtigungen.1763315696.txt.gz
- Zuletzt geändert: 2025/11/16 18:54
- von gkoch