5.7 KiB
🧭 Crumbpage 26: Datenbanken - Das Gedächtnis des Waldes
Subtitle: Warum Excel keine Datenbank ist
Pfad: 26 von X (Datenhaltung)
Schwierigkeit: ⭐⭐⭐ (3/5)
Zeit: ~2 Stunden
Voraussetzungen: Pfad 10: Services
"Daten sind das neue Öl. Aber ohne Motor (Datenbank) sind sie nur klebriger Schlamm." 🛢️
📋 Was du in diesem Pfad lernst
✓ Was ist eine relationale Datenbank? (Tabellen-Theorie)
✓ Der große Krieg: MySQL vs. MariaDB vs. PostgreSQL
✓ Installation von MariaDB (Der offene Standard)
✓ SQL Basics: CREATE, INSERT, SELECT
✓ Sicherheit: mysql_secure_installation
✓ Backup: mysqldump
🎯 Lernziele
Nach diesem Pfad kannst du:
- Einen Datenbank-Server installieren und absichern
- Verstehen, warum wir MariaDB statt MySQL nutzen
- Eine Datenbank für eine Web-App anlegen
- Einfache SQL-Abfragen schreiben
🗄️ Die Zettelkasten-Theorie (Konzepte)
Stell dir vor, du hast 1000 Keks-Rezepte.
Ohne Datenbank (Textdateien):
Du schreibst alles in eine riesige rezepte.txt. Wenn du "Schoko" suchst, musst du die ganze Datei lesen. Langsam.
Mit Datenbank (SQL): Du hast einen riesigen Aktenschrank mit Schubladen (Tabellen).
- Jedes Rezept ist eine Karteikarte (Row).
- Jede Karte hat feste Felder: Name, Zutaten, Backzeit (Columns).
- Der Bibliothekar (SQL-Server) findet "Alle Kekse mit Schoko unter 20 Min Backzeit" in Millisekunden.
Die drei großen Häuser
Laut deinem Dossier gibt es drei Hauptakteure:
- MySQL 🐬: Der alte König. Stabil, Industriestandard, gehört aber Oracle. Das macht manche nervös.
- MariaDB 🦭: Die Rebellion. Erstellt von den ursprünglichen MySQL-Erfindern. Komplett Open Source, schneller, wilder. Unsere Wahl für den Standard-Stack.
- PostgreSQL 🐘: Der Professor. Akademisch, extrem strikt (ACID), kann alles (sogar Geodaten und JSON perfekt). Wenn Datenintegrität wichtiger ist als roher Speed.
🏗️ Installation & Absicherung
Wir installieren MariaDB, weil es im Herzen von Debian/Ubuntu wohnt und "echtes" Open Source ist.
sudo apt update
sudo apt install mariadb-server
Der Türsteher-Check: Läuft der Dienst?
systemctl status mariadb
Sicherheit zuerst! Installierte Datenbanken sind offen wie ein Scheunentor. Wir schließen es ab.
sudo mysql_secure_installation
- Root Passwort setzen? -> Ja.
- Anonyme User entfernen? -> Ja.
- Remote Root Login verbieten? -> Ja.
- Test-DB löschen? -> Ja.
- Tables reloaden? -> Ja.
🔑 Der Erste Eintritt (mysql Shell)
Logge dich als Root in die Datenbank ein:
sudo mysql -u root -p
(Das -u steht für User, das -p fragt nach dem Passwort)
Du bist jetzt in der MariaDB-Shell (MariaDB [(none)]>). Hier sprichst du SQL.
🎓 Hands-On: Das Keks-Inventar
Wir bauen eine Datenbank für unsere Keks-Vorräte.
1. Datenbank erstellen
CREATE DATABASE keks_lager;
USE keks_lager;
(Achte auf das Semikolon ; am Ende jedes Befehls! Das ist wie der Punkt im Satz.)
2. Tabelle anlegen (Der Bauplan) Wir brauchen eine Tabelle für Kekse.
CREATE TABLE kekse (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
typ VARCHAR(30),
anzahl INT,
bewertung INT
);
3. Kekse einlagern (INSERT)
INSERT INTO kekse (name, typ, anzahl, bewertung) VALUES ('Schoko-Kruste', 'Schokolade', 42, 5);
INSERT INTO kekse (name, typ, anzahl, bewertung) VALUES ('Hafer-Glück', 'Gesund', 10, 3);
INSERT INTO kekse (name, typ, anzahl, bewertung) VALUES ('Zimt-Stern', 'Weihnachten', 100, 4);
4. Kekse suchen (SELECT)
-- Zeig mir alles!
SELECT * FROM kekse;
-- Zeig mir nur die guten Sachen
SELECT name, anzahl FROM kekse WHERE bewertung >= 4;
5. Kekse essen (UPDATE) Jemand hat 2 Schoko-Krusten gegessen.
UPDATE kekse SET anzahl = anzahl - 2 WHERE name = 'Schoko-Kruste';
6. User für Apps anlegen
Sicherheitsregel: Niemals den root User in einer Web-App (z.B. WordPress/CrumbForest) benutzen!
CREATE USER 'baekker'@'localhost' IDENTIFIED BY 'geheimes_passwort';
GRANT ALL PRIVILEGES ON keks_lager.* TO 'baekker'@'localhost';
FLUSH PRIVILEGES;
7. Raus hier
EXIT;
📦 Backup & Restore (Die Versicherung)
Datenbanken liegen nicht einfach als Datei herum (technisch schon, in /var/lib/mysql, aber fass die niemals an!).
Wir nutzen Tools zum Exportieren.
Backup (Der Dump):
mysqldump -u root -p keks_lager > mein_backup.sql
Dies erzeugt eine Textdatei mit allen SQL-Befehlen, um die Datenbank wiederherzustellen.
Restore (Das Einspielen):
mysql -u root -p keks_lager < mein_backup.sql
🚀 Advanced: Cluster & Replikation (Ausblick)
In deinem Dossier (db_overview.md) standen spannende Dinge über Galera Cluster.
Das ist für Profis: Wenn ein Server ausfällt, übernimmt der andere sofort.
Bei MySQL/MariaDB Standard-Replikation gibt es einen "Master" (Schreibt) und "Slaves" (Lesen).
Galera ist "Multi-Master" (Alle schreiben).
Für den Anfang reicht uns ein einzelner Server. Aber wisse: Der Wald kann wachsen. 🌱
💭 Reflexion
Eine Datenbank ist das Herz fast jeder modernen Anwendung. Ob WordPress, Nextcloud oder deine eigene App – irgendwo läuft immer ein SELECT * FROM.
Du hast jetzt gelernt, wie man dieses Herz zum Schlagen bringt und Daten sicher speichert.
Vergiss nie: Kein Backup, kein Mitleid. Ein DROP DATABASE fragt nicht "Bist du sicher?". Es löscht einfach.
Navigation:
← Zurück: Postfix | Zurück zur Übersicht