====== LU12a - Data Security & User Management (DCL) ====== **MySQL 9.4** · In **zwei Seiten** bauen wir mit der Beispiel-WordPress-Datenbank des Reiseblogs **wetraveltheworld.de** ein sauberes **User-, Rechte- und Rollen-Konzept** auf. Die Lernenden kennen die Blog-Autor:innen bereits aus den JOIN-Übungen: **Caro Steig**, **Martin Merten** und **Shaolin Tran**. **Wichtig (Abgrenzung WordPress vs. MySQL):** WordPress-**Rollen** (z. B. **Administrator**, **Redakteur**, **Autor**) sind **Anwendungs-Rollen** innerhalb von WordPress. Hier modellieren wir **MySQL-Rollen** (DB-Rechte). Wir bilden die WP-Rollen **sinngemäss** ab, damit ihr Least-Privilege auf DB-Ebene versteht. Im echten WP-Betrieb verwendet man i. d. R. **einen** DB-Benutzer mit definierten Rechten; App-Rollen regelt WordPress selbst. ===== Was ist der root-User? ===== **root** ist der **Superuser** von MySQL: hat **alle** Rechte auf dem Server (alle Datenbanken, Benutzerverwaltung, Serveroperationen). **Verwenden für:** Installation, **Benutzer/Rollen anlegen**, **Rechte vergeben/entziehen**, Backups testen. **Nicht verwenden für:** Applikationsbetrieb, tägliche Queries. Dafür dedizierte **RO**- (Read-Only) und **RW**-Benutzer (Read-Write) einsetzen (**Least Privilege**). ===== Grundbegriffe (einfach) ===== ^ Begriff ^ Kurz erklärt ^ Beispiel ^ | **Datenbank/Schema** | In MySQL synonym; Container für Tabellen | ''CREATE DATABASE app_demo;'' | | **Tabelle** | Struktur mit Zeilen/Spalten | ''CREATE TABLE notes(...);'' | | **Benutzer** | Login-Identität ''user''@''host'' | ''CREATE USER 'eva'@'localhost' ...;'' | | **Host** | Woher der Login kommen darf | ''localhost'' = gleicher Rechner; ''%'' = von überall (vorsichtig!) | | **Grant (Privileg)** | Konkrete Berechtigung (z. B. SELECT) | ''GRANT SELECT ON db.* TO ...;'' | | **Rolle** | Bündel aus Rechten; an viele Benutzer zuweisbar | ''CREATE ROLE 'app_read';'' |