====== 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';'' |