LU12b - Benutzer-Lebenszyklus: CREATE USER & DROP USER
Ziel: Wir legen Benutzer für die Beispiel-DB wttw (wetraveltheworld) an, verstehen Host-Bindung (user'@'host) und löschen Benutzer sauber wieder.
Wir nutzen folgende Personen/Rollenannahmen:
- Caro Steig & Martin Merten ≈ Admins (Website-Admin, nicht Super-Admin)
- Shaolin Tran ≈ Redakteur (Editor)
0) Setup: Beispiel-DB ''wttw'' anlegen (einmalig als root)
-- als root CREATE DATABASE IF NOT EXISTS wttw; USE wttw; -- Minimaler WP-ähnlicher Ausschnitt für die Übung: CREATE TABLE IF NOT EXISTS users ( user_id INT PRIMARY KEY AUTO_INCREMENT, display_name VARCHAR(100) NOT NULL, email VARCHAR(190) NOT NULL UNIQUE ); CREATE TABLE IF NOT EXISTS posts ( post_id INT PRIMARY KEY AUTO_INCREMENT, author_id INT NOT NULL, title VARCHAR(255) NOT NULL, STATUS ENUM('draft','published','trash') NOT NULL DEFAULT 'draft', published_at DATETIME NULL, CONSTRAINT fk_posts_author FOREIGN KEY (author_id) REFERENCES users(user_id) ); CREATE TABLE IF NOT EXISTS comments ( comment_id INT PRIMARY KEY AUTO_INCREMENT, post_id INT NOT NULL, author VARCHAR(100) NOT NULL, body TEXT NOT NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT fk_comments_post FOREIGN KEY (post_id) REFERENCES posts(post_id) ); INSERT INTO users(display_name,email) VALUES ('Caro Steig','caro@wetraveltheworld.de'), ('Martin Merten','martin@wetraveltheworld.de'), ('Shaolin Tran','shaolin@wetraveltheworld.de');
1) CREATE USER – Benutzer anlegen
Syntax:
CREATE USER [IF NOT EXISTS] 'user'@'host' IDENTIFIED BY 'Str0ng!Pass';
Host verstehen (''user'@'host'')
'name'@'localhost' → Login nur vom gleichen Rechner (Unterrichts-Standard).'name'@'192.168.1.%' → nur aus dem internen Netz.'name'@'%'' → von überall (nur wenn zwingend nötig – Sicherheitsrisiko!).
Praxis: DB-Benutzer für WP-Szenario
-- als root anlegen: CREATE USER IF NOT EXISTS 'caro_admin'@'localhost' IDENTIFIED BY 'Secure$Caro!'; CREATE USER IF NOT EXISTS 'martin_admin'@'localhost' IDENTIFIED BY 'Secure$Martin!'; CREATE USER IF NOT EXISTS 'tran_editor'@'localhost' IDENTIFIED BY 'Secure$Tran!'; -- optional: App/Integration-User (minimal) CREATE USER IF NOT EXISTS 'wp_api'@'localhost' IDENTIFIED BY 'Secure$Api!'; -- Sichtprüfung SELECT USER, host FROM mysql.user ORDER BY USER, host;
Wichtig: Ein neu angelegter Benutzer hat keine Rechte. Rechte/Rollen vergeben wir auf Seite 2) Rechte & Rollen mit GRANT.
2) DROP USER – Benutzer entfernen
Syntax:
DROP USER [IF EXISTS] 'user'@'host'[, ...];
Entfernt den Benutzer und seine Grants.
Beispiele
-- Übungs-Account nicht mehr benötigt: DROP USER IF EXISTS 'demo_temp'@'localhost'; -- mehrere auf einmal DROP USER 'alt_redakteur'@'localhost', 'legacy_integration'@'%';
Aktive Verbindungen zuerst trennen (falls nötig)
-- wer ist verbunden? SHOW PROCESSLIST; -- z. B. Prozess 21 beenden und dann löschen KILL 21; DROP USER 'legacy_integration'@'%';