Files
OZM-Keks-Handbuch-v1/crumbpage-26-databases.md
Branko May Trinkwald a9ba99edfb Postfix & Datenbank Update
2025-12-30 14:52:46 +01:00

5.7 KiB
Raw Permalink Blame History

🧭 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:

  1. MySQL 🐬: Der alte König. Stabil, Industriestandard, gehört aber Oracle. Das macht manche nervös.
  2. MariaDB 🦭: Die Rebellion. Erstellt von den ursprünglichen MySQL-Erfindern. Komplett Open Source, schneller, wilder. Unsere Wahl für den Standard-Stack.
  3. 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