Dies ist eine alte Version des Dokuments!


LU12c: MySQL – Rollen & Berechtigungen im Notenbuch

Sie können …

  • in einer einfachen Noten-Datenbank zwei sinnvolle Rollen definieren (Administration und Lernende).
  • mit den Befehlen CREATE USER, CREATE ROLE, GRANT, SHOW GRANTS in MySQL umgehen.
  • erklären, wie das Prinzip der minimalen Privilegien mit Rollen umgesetzt werden kann.

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.

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;

Nun legen Sie fest, was die beiden Rollen genau dürfen.

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.

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_role darf alle Daten in noten_db lesen,
  • 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.

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.

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_admin arbeitet mit allen Rechten der Rolle db_admin,
  • lernende arbeitet mit den Leserechten der Rolle lernende_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.

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.

Mit diesen zwei Rollen und zwei MySQL-Benutzern setzen Sie zentrale Datenschutzprinzipien um:

  • Schutz vor unbefugtem Zugriff
    • Nur die Benutzer noten_admin und lernende haben Zugriff auf die Noten-Datenbank.
  • Prinzip der minimalen Privilegien
    • noten_admin darf alles, trägt aber auch volle Verantwortung.
    • lernende darf 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.

  • modul/m290_guko/learningunits/lu12/theorie/c_mysql_rollen_berechtigungen.1763316388.txt.gz
  • Zuletzt geändert: 2025/11/16 19:06
  • von gkoch