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

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.

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.

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.

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.

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.

* volle Rechte auf noten_db.*, * darf Berechtigungen weitergeben (GRANT OPTION).

Gedacht für: eine verantwortliche Person (z. B. IT-Verantwortliche/r oder Datenbank-Admin).

* 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).

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.

Nun hinterlegen Sie bei jeder Rolle, was sie darf.

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.

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.

Jetzt legen Sie genau zwei MySQL-Benutzer an:

* noten_admin – Admin-Benutzer der Datenbank, * noten_app – technischer Benutzer für die Notenbuch-Anwendung.

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.

GRANT db_admin
TO 'noten_admin'@'%';
 
GRANT grades_app
TO 'noten_app'@'localhost'; 

Damit gilt:

* noten_admin

  • hat über die Rolle db_admin die volle Verantwortung für die Datenbank noten_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_app und 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.

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.

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 mit noten_app und Rolle grades_app.
  • Strukturänderungen und Berechtigungsverwaltung sind nur über noten_admin mö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