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:
-- 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');
Syntax:
CREATE USER [IF NOT EXISTS] 'user'@'host' IDENTIFIED BY 'Str0ng!Pass';
'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!).-- 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.
Syntax:
DROP USER [IF EXISTS] 'user'@'host'[, ...];
Entfernt den Benutzer und seine Grants.
-- Übungs-Account nicht mehr benötigt: DROP USER IF EXISTS 'demo_temp'@'localhost'; -- mehrere auf einmal DROP USER 'alt_redakteur'@'localhost', 'legacy_integration'@'%';
-- wer ist verbunden? SHOW PROCESSLIST; -- z. B. Prozess 21 beenden und dann löschen KILL 21; DROP USER 'legacy_integration'@'%';