Postfix & Datenbank Update
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# 🧭 Crumbforest Admin-Vektor: Der Pfad des Waldhüters
|
||||
|
||||
**Subtitle:** *Die 8 Pfade der System-Meisterschaft*
|
||||
**Subtitle:** *Die 25 Pfade der System-Meisterschaft*
|
||||
**Version:** 1.0
|
||||
**Audience:** Angehende Systemadministratoren & Waldläufer
|
||||
|
||||
@@ -20,7 +20,7 @@ Jede **Crumbpage** behandelt ein Kernthema und baut auf dem vorherigen auf. Du l
|
||||
|
||||
---
|
||||
|
||||
## 🗺️ Die 23 Pfade (Übersicht)
|
||||
## 🗺️ Die 26 Pfade (Übersicht)
|
||||
|
||||
| Pfad | Thema | Kern-Konzepte | Status |
|
||||
|------|-------|---------------|--------|
|
||||
@@ -48,6 +48,8 @@ Jede **Crumbpage** behandelt ein Kernthema und baut auf dem vorherigen auf. Du l
|
||||
| **22** | Hallo Nullfeld | `#philosophie #crew #resonanz #nullfeld` | 🆕 Neu |
|
||||
| **23** | AI, Vektor & Philosophie | `#ai #ki #vektor #emergenz #samurai-shaolin` | 🆕 Neu |
|
||||
| **24** | **Docker - Der Wal** | `#container #compose #images #tupperware` | 🆕 Neu |
|
||||
| **25** | **Postfix** | `#mta #smtp #mail #virtual-domains` | 🆕 Neu |
|
||||
| **26** | **Datenbanken** | `#sql #mariadb #mysql #backup` | 🆕 Neu |
|
||||
|
||||
---
|
||||
|
||||
@@ -628,7 +630,54 @@ Container = Eine Tupperdose für die Pizza.
|
||||
|
||||
---
|
||||
|
||||
## 📚 Pfad 25: Postfix - Der digitale Postbote
|
||||
|
||||
**Was du lernst:**
|
||||
- Was ist ein MTA? (Postverteilzentrum)
|
||||
- Wie installiere ich Postfix?
|
||||
- Virtuelle Domains & Benutzer
|
||||
- Telnet/Netcat für manuellen Mailversand ("Hands on")
|
||||
|
||||
**Warum das wichtig ist:**
|
||||
- E-Mail ist das Rückgrat der Kommunikation.
|
||||
- "Der Server sendet keine Mails" ist ein Klassiker.
|
||||
- Du verstehst endlich, warum Spam-Filter dich hassen.
|
||||
|
||||
**Die Postverteilzentrum-Theorie:**
|
||||
```
|
||||
MTA = Pförtner, der Briefe annimmt.
|
||||
Mailbox = Das Fach für den Bewohner.
|
||||
SMTP = Die Sprache der Postboten.
|
||||
```
|
||||
|
||||
**→ [Zur Crumbpage: Postfix](crumbpage-25-postfix.md)**
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
## 📚 Pfad 26: Datenbanken - Das Gedächtnis des Waldes
|
||||
|
||||
**Was du lernst:**
|
||||
- MySQL vs. MariaDB vs. PostgreSQL
|
||||
- Installation & Security (`mysql_secure_installation`)
|
||||
- SQL Basics (Die Sprache der Daten)
|
||||
- Backup & Restore
|
||||
|
||||
**Warum das wichtig ist:**
|
||||
- Jede Web-App braucht eine DB.
|
||||
- Datenverluste sind tödlich.
|
||||
- Du lernst, Daten strukturiert zu sehen.
|
||||
|
||||
**Die Zettelkasten-Theorie:**
|
||||
```
|
||||
Textdatei = Langsames Suchen im Haufen.
|
||||
Datenbank = Blitzschnelles Finden im Index.
|
||||
```
|
||||
|
||||
**→ [Zur Crumbpage: Datenbanken](crumbpage-26-databases.md)**
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Wie du den Vektor durchläufst
|
||||
|
||||
@@ -684,6 +733,10 @@ START: Absolute Basics
|
||||
├─ Pfad 23: AI & Philosophie ──────→ SAMURAI ⟡ SHAOLIN
|
||||
│
|
||||
└─ Pfad 24: Docker ────────────────→ MODERN ERA
|
||||
│
|
||||
└─ Pfad 25: Postfix ───────────────→ COMMUNICATION
|
||||
│
|
||||
└─ Pfad 26: Datenbanken ───────────→ PERSISTENCE
|
||||
|
||||
```
|
||||
|
||||
@@ -701,6 +754,8 @@ Pfad 21: ~3-4 Stunden (Backup & Automatisierung)
|
||||
Pfad 22: ~1 Stunde (Reflexion & Philosophie)
|
||||
Pfad 23: ~2-3 Stunden (AI, Vektor & Philosophie - oder ein Leben lang?)
|
||||
Pfad 24: ~2-3 Stunden (Docker Basics)
|
||||
Pfad 25: ~3-4 Stunden (Postfix & SMTP)
|
||||
Pfad 26: ~2 Stunden (SQL & MariaDB)
|
||||
|
||||
Total: ~34-42 Stunden aktives Lernen
|
||||
```
|
||||
@@ -766,7 +821,9 @@ wsl --install
|
||||
├── 22-nullfeld-willkommen.md
|
||||
├── 22-nullfeld-willkommen.md
|
||||
├── 23-ai-vektor-philosophie.md
|
||||
└── 24-docker.md
|
||||
├── 24-docker.md
|
||||
├── 25-postfix.md
|
||||
├── 26-databases.md
|
||||
```
|
||||
|
||||
### Externe Ressourcen
|
||||
@@ -894,8 +951,12 @@ Die Eule erinnert dich:
|
||||
- [ ] Pfad 21: Backup, RAID & Cron (0%)
|
||||
- [ ] Pfad 22: Hallo Nullfeld (0%)
|
||||
- [ ] Pfad 23: AI, Vektor & Philosophie (0%)
|
||||
- [ ] Pfad 24: Docker (0%)
|
||||
- [ ] Pfad 25: Postfix (0%)
|
||||
- [ ] Pfad 26: Datenbanken (0%)
|
||||
|
||||
**Gesamtfortschritt:** 0/26 Pfade
|
||||
|
||||
**Gesamtfortschritt:** 0/23 Pfade
|
||||
**Startdatum:** YYYY-MM-DD
|
||||
**Geschätzte Completion:** YYYY-MM-DD
|
||||
```
|
||||
@@ -957,7 +1018,7 @@ Systemadministration ist ein **Handwerk**, das Zeit und Übung braucht. Die 8 Pf
|
||||
|
||||
---
|
||||
|
||||
**Version:** 3.0 (23 Pfade: Samurai ⟡ Shaolin + OZM⟡NEXUS Integration)
|
||||
**Version:** 3.2 (26 Pfade: Samurai ⟡ Shaolin + OZM⟡NEXUS Integration)
|
||||
**Letzte Änderung:** 2025-12-13
|
||||
**Maintainer:** Crumbforest Core Team
|
||||
**Custodian:** OZM - Open Futures Museum (in transition)
|
||||
|
||||
@@ -264,4 +264,4 @@ Nutze sie weise.
|
||||
---
|
||||
|
||||
**Navigation:**
|
||||
[← Zurück: Philosophie](crumbpage-23-ai-vektor-philosophie.md) | [Zurück zur Übersicht](crumbforest-admin-vektor.md)
|
||||
[← Zurück: Philosophie](crumbpage-23-ai-vektor-philosophie.md) | [Weiter: Postfix →](crumbpage-25-postfix.md)
|
||||
|
||||
244
crumbpage-25-postfix.md
Normal file
244
crumbpage-25-postfix.md
Normal file
@@ -0,0 +1,244 @@
|
||||
# 🧭 Crumbpage 25: Postfix - Der digitale Postbote
|
||||
|
||||
**Subtitle:** *Warum E-Mails auch nur Postkarten sind*
|
||||
**Pfad:** 25 von X (Kommunikation)
|
||||
**Schwierigkeit:** ⭐⭐⭐⭐ (4/5)
|
||||
**Zeit:** ~3-4 Stunden
|
||||
**Voraussetzungen:** [Pfad 10: Services](crumbpage-10-services-ports.md), [Pfad 15: DNS](crumbpage-15-dns.md)
|
||||
|
||||
> *"Email is wonderful. It allows you to communicate with people you don't want to talk to."* 🦉
|
||||
|
||||
---
|
||||
|
||||
## 📋 Was du in diesem Pfad lernst
|
||||
|
||||
```
|
||||
✓ Was ist ein MTA? (Postverteilzentrum-Theorie)
|
||||
✓ Installation von Postfix
|
||||
✓ Die wichtigste Datei: main.cf
|
||||
✓ Virtuelle Domains (Briefkästen ohne Hausbewohner)
|
||||
✓ Debugging mit Telnet/Netcat (Manuelles Post-Einwerfen)
|
||||
✓ Troubleshooting & Warteschlangen
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Lernziele
|
||||
|
||||
Nach diesem Pfad kannst du:
|
||||
|
||||
- [ ] Einen Mailserver grundlegend konfigurieren
|
||||
- [ ] Verstehen, wie eine E-Mail von A nach B kommt
|
||||
- [ ] Virtuelle Domains und Benutzer einrichten
|
||||
- [ ] SMTP manuell sprechen (ja, wirklich!)
|
||||
|
||||
---
|
||||
|
||||
## 📮 Die Postverteilzentrum-Theorie (Konzepte)
|
||||
|
||||
Stell dir vor, dein Server ist ein großes Mietshaus.
|
||||
|
||||
**Ohne Postfix:**
|
||||
Niemand nimmt Post an. Briefe werden zurück an den Absender geschickt ("Return to Sender").
|
||||
|
||||
**Mit Postfix (Der MTA):**
|
||||
Du stellst einen Pförtner (MTA - Mail Transfer Agent) ein.
|
||||
- Er nimmt Briefe an (**SMTP**).
|
||||
- Er schaut auf die Adresse.
|
||||
- Wohnt der Empfänger hier? -> Ab ins Fach (**Local Delivery**).
|
||||
- Wohnt der Empfänger woanders? -> Weiterleiten (**Relaying**).
|
||||
|
||||
**Der Unterschied zwischen System-User und Virtuellem User:**
|
||||
- **System-User:** Hat eine Wohnung im Haus (Linux Account, `/etc/passwd`). Er hat einen Schlüssel zur Haustür (SSH).
|
||||
- **Virtueller User:** Hat nur ein Postfach im Flur. Er darf nicht im Haus wohnen (kein SSH), aber er bekommt Post. Das ist, was wir meistens wollen (z.B. für `info@example.com`).
|
||||
|
||||
---
|
||||
|
||||
## 🏗️ Installation & Erster Start
|
||||
|
||||
Wie immer bei Debian/Ubuntu, ist der erste Schritt einfach:
|
||||
|
||||
```bash
|
||||
sudo apt update
|
||||
sudo apt install postfix
|
||||
```
|
||||
|
||||
Während der Installation wirst du gefragt, welche Art von Konfiguration du willst.
|
||||
Wähle: **"Internet Site"**.
|
||||
System Mail Name: Dein Hostname (z.B. `mail.deinedomain.de`).
|
||||
|
||||
Prüfen, ob der Pförtner wach ist:
|
||||
```bash
|
||||
systemctl status postfix
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ⚙️ Die Schaltzentrale: main.cf
|
||||
|
||||
Die Datei `/etc/postfix/main.cf` ist das Gehirn deines Postboten. Hier stehen die Regeln.
|
||||
|
||||
```bash
|
||||
nano /etc/postfix/main.cf
|
||||
```
|
||||
|
||||
### Wichtige Parameter
|
||||
|
||||
| Parameter | Bedeutung |
|
||||
|-----------|-----------|
|
||||
| `myhostname` | Wie heißt der Server selbst? (z.B. `srv01.example.com`) |
|
||||
| `mydomain` | Die Haupt-Domain (z.B. `example.com`) |
|
||||
| `mydestination` | Für welche Domains fühlen wir uns *lokal* zuständig? (Hier landen Mails für System-User) |
|
||||
| `inet_interfaces` | Wo lauschen wir? (`all` = überall) |
|
||||
| `mynetworks` | Wer darf über uns senden, ohne sich auszuweisen? (Eigene IPs, Localhost) |
|
||||
|
||||
**Beispiel-Snippet:**
|
||||
```conf
|
||||
myhostname = mail.kruemel-forest.de
|
||||
mydomain = kruemel-forest.de
|
||||
inet_interfaces = all
|
||||
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 👻 Virtuelle Domänen & Benutzer
|
||||
|
||||
Jetzt wird es spannend. Wir wollen Mailadressen, ohne Linux-User anzulegen. Wir bauen "Schein-Briefkästen".
|
||||
|
||||
### 1. Die Struktur
|
||||
Wir legen Maps (Tabellen) an unter `/etc/postfix/virtual/`:
|
||||
|
||||
- `virtual_mailbox_domains`: Welche Domains gehören uns?
|
||||
- `virtual_mailbox_maps`: Welcher User hat welchen Ordner?
|
||||
- `virtual_alias_maps`: Weiterleitungen (z.B. `info` -> `admin`).
|
||||
|
||||
### 2. Die Dateien anlegen
|
||||
|
||||
```bash
|
||||
mkdir -p /etc/postfix/virtual
|
||||
cd /etc/postfix/virtual
|
||||
```
|
||||
|
||||
**virtual_mailbox_domains:**
|
||||
```text
|
||||
example.com
|
||||
kruemel-forest.de
|
||||
```
|
||||
|
||||
**virtual_mailbox_maps:**
|
||||
```text
|
||||
# User # Pfad zum Maildir (endet mit /)
|
||||
alice@example.com example.com/alice/Maildir/
|
||||
bob@kruemel-forest.de kruemel-forest.de/bob/Maildir/
|
||||
```
|
||||
|
||||
**virtual_alias_maps:**
|
||||
```text
|
||||
info@example.com alice@example.com
|
||||
postmaster@example.com alice@example.com
|
||||
```
|
||||
|
||||
### 3. Hashen & Konfigurieren
|
||||
|
||||
Postfix liest keine Textdateien, er will Datenbanken (`.db`).
|
||||
```bash
|
||||
postmap /etc/postfix/virtual/virtual_mailbox_domains
|
||||
postmap /etc/postfix/virtual/virtual_mailbox_maps
|
||||
postmap /etc/postfix/virtual/virtual_alias_maps
|
||||
```
|
||||
|
||||
Und in der `main.cf` bekannt machen:
|
||||
```conf
|
||||
virtual_mailbox_domains = hash:/etc/postfix/virtual/virtual_mailbox_domains
|
||||
virtual_mailbox_maps = hash:/etc/postfix/virtual/virtual_mailbox_maps
|
||||
virtual_alias_maps = hash:/etc/postfix/virtual/virtual_alias_maps
|
||||
```
|
||||
|
||||
Nach jeder Änderung: `systemctl reload postfix`.
|
||||
|
||||
---
|
||||
|
||||
## 🕵️ Hands-On: Postbote spielen (Telnet/Netcat)
|
||||
|
||||
Wirf die GUI weg. Wir stellen jetzt eine Mail von Hand zu, um zu sehen, ob der Server reagiert.
|
||||
|
||||
**Werkzeug:** `telnet` oder `nc` (Netcat).
|
||||
|
||||
**Szenario:** Du bist ein fremder Server und willst eine Mail an `alice@example.com` abgeben.
|
||||
|
||||
```bash
|
||||
# 1. Verbindung aufbauen (Port 25)
|
||||
nc -v localhost 25
|
||||
|
||||
# Server sagt: 220 mail.kruemel-forest.de ESMTP Postfix...
|
||||
|
||||
# 2. Begrüßen (Höflichkeit ist wichtig)
|
||||
EHLO mein-test-pc.local
|
||||
|
||||
# Server antwortet mit Features...
|
||||
|
||||
# 3. Absender angeben
|
||||
MAIL FROM:<tester@extern.com>
|
||||
|
||||
# 4. Empfänger angeben (Hier prüft Postfix, ob er zuständig ist!)
|
||||
RCPT TO:<alice@example.com>
|
||||
|
||||
# Server: 250 2.1.5 Ok
|
||||
|
||||
# 5. Inhalt senden
|
||||
DATA
|
||||
Subject: Manuelle Testmail
|
||||
|
||||
Hallo Alice,
|
||||
dies ist eine handgetippte E-Mail.
|
||||
Grüße aus dem Terminal!
|
||||
.
|
||||
# (Der Punkt am Ende einer Zeile beendet die Mail)
|
||||
|
||||
# 6. Tschüss
|
||||
QUIT
|
||||
```
|
||||
|
||||
Wenn du ein `250 2.0.0 Ok: queued as ...` bekommst, hast du gewonnen! Die Mail ist im System.
|
||||
|
||||
---
|
||||
|
||||
## 🔍 Troubleshooting
|
||||
|
||||
Wenn nichts ankommt, schau in die Logs. Postfix ist geschwätzig.
|
||||
|
||||
**1. Logfile lesen (Live):**
|
||||
```bash
|
||||
tail -f /var/log/mail.log
|
||||
# oder
|
||||
journalctl -u postfix -f
|
||||
```
|
||||
|
||||
**2. Die Warteschlange (Queue):**
|
||||
Ist die Tasche des Postboten voll?
|
||||
```bash
|
||||
mailq
|
||||
```
|
||||
- `Deferred`: Versuchen wir später nochmal (Empfänger nicht da?).
|
||||
- `Bounced`: Zurück an Absender (Adresse falsch?).
|
||||
- `Active`: Wird gerade verarbeitet.
|
||||
|
||||
**3. Queue leeren (Flush):**
|
||||
"Versuch es JETZT sofort nochmal!"
|
||||
```bash
|
||||
postqueue -f
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 💭 Reflexion
|
||||
|
||||
E-Mail fühlt sich alt an. Ist es auch. Das Protokoll (SMTP) stammt aus den 80ern. Aber genau deshalb ist es so robust. Es ist dezentral, föderiert und textbasiert.
|
||||
|
||||
Mit Postfix hast du einen der mächtigsten Server-Dienste überhaupt gebändigt. Du bist nicht mehr auf GMail oder Web.de angewiesen. Du bist jetzt dein eigener Provider. (Zumindest für den Empfang – Senden ist wegen Spam-Filtern eine andere Geschichte, Stichwort DKIM/SPF, aber das ist ein Thema für einen anderen Keks).
|
||||
|
||||
---
|
||||
|
||||
**Navigation:**
|
||||
[← Zurück: Docker](crumbpage-24-docker.md) | [Weiter: Datenbanken →](crumbpage-26-databases.md)
|
||||
201
crumbpage-26-databases.md
Normal file
201
crumbpage-26-databases.md
Normal file
@@ -0,0 +1,201 @@
|
||||
# 🧭 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](crumbpage-10-services-ports.md)
|
||||
|
||||
> *"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.
|
||||
|
||||
```bash
|
||||
sudo apt update
|
||||
sudo apt install mariadb-server
|
||||
```
|
||||
|
||||
**Der Türsteher-Check:**
|
||||
Läuft der Dienst?
|
||||
```bash
|
||||
systemctl status mariadb
|
||||
```
|
||||
|
||||
**Sicherheit zuerst!**
|
||||
Installierte Datenbanken sind offen wie ein Scheunentor. Wir schließen es ab.
|
||||
```bash
|
||||
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:
|
||||
|
||||
```bash
|
||||
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**
|
||||
```sql
|
||||
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.
|
||||
```sql
|
||||
CREATE TABLE kekse (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
name VARCHAR(50),
|
||||
typ VARCHAR(30),
|
||||
anzahl INT,
|
||||
bewertung INT
|
||||
);
|
||||
```
|
||||
|
||||
**3. Kekse einlagern (INSERT)**
|
||||
```sql
|
||||
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)**
|
||||
```sql
|
||||
-- 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.
|
||||
```sql
|
||||
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!
|
||||
|
||||
```sql
|
||||
CREATE USER 'baekker'@'localhost' IDENTIFIED BY 'geheimes_passwort';
|
||||
GRANT ALL PRIVILEGES ON keks_lager.* TO 'baekker'@'localhost';
|
||||
FLUSH PRIVILEGES;
|
||||
```
|
||||
|
||||
**7. Raus hier**
|
||||
```sql
|
||||
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):**
|
||||
```bash
|
||||
mysqldump -u root -p keks_lager > mein_backup.sql
|
||||
```
|
||||
Dies erzeugt eine Textdatei mit allen SQL-Befehlen, um die Datenbank wiederherzustellen.
|
||||
|
||||
**Restore (Das Einspielen):**
|
||||
```bash
|
||||
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](crumbpage-25-postfix.md) | [Zurück zur Übersicht](crumbforest-admin-vektor.md)
|
||||
Reference in New Issue
Block a user