💡 Hinweis: Dieses Tutorial setzt voraus, dass du einen normalen Benutzer mit sudo-Rechten verwendest — wie im Tutorial Debian 13 Server absichern beschrieben.

Einleitung — Was ist MariaDB und warum nicht MySQL?

MariaDB ist ein relationales Datenbankmanagementsystem (RDBMS), das 2009 als Fork von MySQL entstanden ist. Der Hauptentwickler Michael „Monty“ Widenius — derselbe, der auch MySQL erschuf — gründete MariaDB, nachdem Oracle MySQL übernommen hatte. Die Sorge: Oracle könnte MySQL kommerzialisieren und die Open-Source-Community einschränken.

Warum MariaDB statt MySQL?

  • Vollständig Open Source — MariaDB steht unter der GPL und wird von der MariaDB Foundation betreut, nicht von einem Konzern
  • Drop-in-Replacement — MariaDB ist weitgehend kompatibel mit MySQL. Befehle, Treiber und Tools funktionieren in der Regel identisch
  • Bessere Performance — MariaDB enthält Optimierungen wie den Aria-Storage-Engine und verbesserte Query-Optimizer
  • Aktive Entwicklung — Features wie System-Versioning, Columnstore und bessere JSON-Unterstützung kommen schneller
  • Debian-Standard — Debian liefert seit Jahren MariaDB statt MySQL aus. Auf Debian 13 „Trixie“ ist MariaDB 11.x das Standard-RDBMS

In diesem Guide installieren wir MariaDB auf Debian 13 „Trixie“, sichern die Installation ab, legen Datenbanken und Benutzer an, optimieren die Konfiguration und richten Backups sowie sicheren Remote-Zugriff ein.


Voraussetzungen

Bevor du loslegst, brauchst du:

  • Einen Server mit Debian 13 „Trixie“ (Minimal- oder Standardinstallation)
  • Root-Zugang oder einen Benutzer mit sudo-Rechten
  • Eine funktionierende Internetverbindung
  • Grundlegende Terminal-Kenntnisse
📌 Tipp: Falls du noch keinen Debian-13-Server aufgesetzt hast, lies zuerst unser Tutorial Debian 13 „Trixie“ Server-Grundinstallation — Der perfekte Start.

Alle Befehle in diesem Tutorial werden als root ausgeführt. Falls du mit einem normalen Benutzer arbeitest, stelle jedem Befehl sudo voran.


MariaDB installieren

Option 1: Aus den Debian-Repositories (empfohlen für die meisten Nutzer)

Debian 13 liefert MariaDB direkt mit. Die Installation ist denkbar einfach:

sudo apt update
sudo apt install mariadb-server mariadb-client -y

Das installiert den MariaDB-Server und den Kommandozeilen-Client. Nach der Installation startet MariaDB automatisch:

# Status prüfen
sudo systemctl status mariadb

Die Ausgabe sollte active (running) zeigen.

# Version prüfen
sudo mariadb --version

Option 2: Offizielle MariaDB-Repositories (für neueste Version)

Falls du eine bestimmte oder die allerneueste MariaDB-Version benötigst, kannst du das offizielle Repository einbinden:

# Abhängigkeiten installieren
sudo apt install apt-transport-https curl gnupg -y

# MariaDB-Signing-Key importieren
sudo curl -fsSL https://mariadb.org/mariadb_release_signing_key.pgp | sudo gpg --dearmor -o /usr/share/keyrings/mariadb-archive-keyring.gpg

# Repository hinzufügen (Beispiel für MariaDB 11.4 LTS)
sudo cat > /etc/apt/sources.list.d/mariadb.sources <<EOF
Types: deb
URIs: https://dlm.mariadb.com/repo/mariadb-server/11.4/repo/debian
Suites: trixie
Components: main
Signed-By: /usr/share/keyrings/mariadb-archive-keyring.gpg
EOF

# Aktualisieren und installieren
sudo apt update
sudo apt install mariadb-server mariadb-client -y
⚠️ Hinweis: Für Produktionsserver empfehle ich die LTS-Version (Long Term Support). Sie erhält längere Sicherheitsupdates. Prüfe die aktuelle LTS-Version auf mariadb.org/download.

Autostart sicherstellen

sudo systemctl enable mariadb
sudo systemctl start mariadb

mysql_secure_installation — Schritt für Schritt

Nach der Installation ist MariaDB funktionsfähig, aber nicht sicher. Das mitgelieferte Script mariadb-secure-installation behebt die wichtigsten Schwachstellen:

sudo mariadb-secure-installation

Das Script führt dich interaktiv durch mehrere Fragen. Hier erkläre ich jede einzelne:

1. „Enter current password for root“

Bei einer frischen Installation ist kein Passwort gesetzt. Drücke einfach Enter.

2. „Switch to unix_socket authentication?“

Auf Debian ist unix_socket bereits der Standard. Antworte mit Y. Das bedeutet: Der Linux-Benutzer root kann sich ohne Passwort an MariaDB anmelden, aber nur lokal über den Socket. Mehr dazu im nächsten Abschnitt.

3. „Change the root password?“

Wenn unix_socket aktiv ist, brauchst du kein separates Root-Passwort. Du kannst trotzdem eines setzen (als zusätzliche Absicherung). Für die meisten Setups: N (unix_socket reicht).

4. „Remove anonymous users?“

Y — Anonyme Benutzer erlauben Zugriff ohne Authentifizierung. Die müssen weg.

5. „Disallow root login remotely?“

Y — Root sollte sich nur lokal anmelden können, niemals über das Netzwerk.

6. „Remove test database and access to it?“

Y — Die Test-Datenbank ist ein Sicherheitsrisiko und wird nicht gebraucht.

7. „Reload privilege tables now?“

Y — Damit die Änderungen sofort wirksam werden.

✅ Zusammenfassung: Nach mariadb-secure-installation ist deine Datenbank deutlich besser abgesichert: keine anonymen Nutzer, kein Remote-Root-Zugang, keine Test-Datenbank.

Root-Zugang & Authentifizierung verstehen

Ein häufiger Stolperstein: „Warum kann ich mich nicht mit einem Passwort als root anmelden?“

unix_socket-Authentifizierung (Standard auf Debian)

MariaDB prüft bei unix_socket, welcher Linux-Benutzer die Verbindung aufbaut. Wenn du als Linux-User root angemeldet bist, wirst du automatisch als MariaDB-User root authentifiziert — ohne Passwort:

# Als root einloggen (funktioniert nur als Linux-root)
sudo mariadb

Das ist sicherer als ein Passwort, weil:

  • Kein Passwort im Klartext existiert, das gestohlen werden könnte
  • Nur der Linux-root-Benutzer Zugriff hat
  • Brute-Force-Angriffe auf das DB-Passwort unmöglich sind

Passwort-Authentifizierung

Falls du trotzdem ein Root-Passwort setzen möchtest (z. B. für Tools wie phpMyAdmin):

sudo mariadb

-- Passwort setzen (zusätzlich zu unix_socket)
ALTER USER 'root'@'localhost' IDENTIFIED VIA unix_socket OR mysql_native_password USING PASSWORD('DeinSicheresPasswort!');

So kannst du dich sowohl über den Socket als auch mit Passwort anmelden.

📌 Best Practice: Für Anwendungen (WordPress, Nextcloud, etc.) legst du immer eigene Benutzer mit Passwort an — niemals root verwenden!

Datenbank & Benutzer anlegen

Für jede Anwendung solltest du eine eigene Datenbank und einen eigenen Benutzer mit minimalen Rechten erstellen. Das ist das Prinzip der geringsten Privilegien (Least Privilege).

Datenbank erstellen

sudo mariadb

CREATE DATABASE meine_app
  CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;

utf8mb4 unterstützt alle Unicode-Zeichen inklusive Emojis. Verwende es immer statt utf8 (das in MySQL/MariaDB nur 3 Bytes nutzt).

Benutzer erstellen

CREATE USER 'app_user'@'localhost'
  IDENTIFIED BY 'Ein$icheres_Passw0rt!';

'localhost' bedeutet: Dieser Benutzer kann sich nur lokal verbinden. Für Remote-Zugriff ersetze es durch '%' (alle Hosts) oder eine spezifische IP.

Rechte vergeben

-- Alle Rechte auf eine bestimmte Datenbank
GRANT ALL PRIVILEGES ON meine_app.* TO 'app_user'@'localhost';

-- Änderungen übernehmen
FLUSH PRIVILEGES;

Rechte prüfen

SHOW GRANTS FOR 'app_user'@'localhost';

Best Practices für Benutzer

SituationEmpfehlung
WordPress-InstallationGRANT ALL ON wp_db.* TO 'wp_user'@'localhost'
Nur-Lese-Zugriff für ReportingGRANT SELECT ON db.* TO 'report_user'@'localhost'
Backup-BenutzerGRANT SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER ON *.* TO 'backup_user'@'localhost'
🚫 Niemals: GRANT ALL ON *.* TO 'user'@'%' — Das gibt einem Benutzer Vollzugriff auf alle Datenbanken von überall. Das ist ein massives Sicherheitsrisiko.

Grundlegende SQL-Befehle — Kurzüberblick

Hier ein schneller Überblick der wichtigsten SQL-Befehle. Falls du neu in SQL bist, hilft dir das beim Einstieg.

Datenbanken & Tabellen verwalten

-- Alle Datenbanken anzeigen
SHOW DATABASES;

-- Datenbank auswählen
USE meine_app;

-- Alle Tabellen anzeigen
SHOW TABLES;

-- Tabelle erstellen
CREATE TABLE benutzer (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(255) UNIQUE NOT NULL,
    erstellt_am TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Tabellenstruktur anzeigen
DESCRIBE benutzer;

Daten einfügen (INSERT)

INSERT INTO benutzer (name, email) VALUES ('Max Mustermann', 'max@example.com');
INSERT INTO benutzer (name, email) VALUES ('Erika Muster', 'erika@example.com');

Daten abfragen (SELECT)

-- Alle Datensätze
SELECT * FROM benutzer;

-- Bestimmte Spalten mit Bedingung
SELECT name, email FROM benutzer WHERE id = 1;

-- Sortiert und limitiert
SELECT * FROM benutzer ORDER BY erstellt_am DESC LIMIT 10;

Daten aktualisieren (UPDATE)

UPDATE benutzer SET email = 'neuemail@example.com' WHERE id = 1;
⚠️ Wichtig: Vergiss niemals die WHERE-Klausel bei UPDATE und DELETE! Ohne WHERE werden alle Datensätze geändert oder gelöscht.

Daten löschen (DELETE)

-- Einzelnen Datensatz löschen
DELETE FROM benutzer WHERE id = 2;

-- ALLE Daten löschen (Vorsicht!)
DELETE FROM benutzer;

Konfiguration optimieren

Die MariaDB-Standardkonfiguration ist konservativ. Für einen dedizierten Datenbankserver oder auch einen VPS mit etwas mehr RAM lohnt es sich, die wichtigsten Parameter anzupassen.

Die Konfigurationsdateien liegen unter /etc/mysql/mariadb.conf.d/. Erstelle eine eigene Datei für deine Anpassungen:

sudo nano /etc/mysql/mariadb.conf.d/99-custom.cnf
[mysqld]
# === InnoDB-Einstellungen ===
# Hauptspeicher für InnoDB — setze auf ~70-80% des verfügbaren RAM
# Beispiel für 4 GB RAM:
innodb_buffer_pool_size = 3G

# Log-Dateigröße — größer = bessere Schreib-Performance, aber längere Recovery
innodb_log_file_size = 512M

# Flush-Methode — O_DIRECT vermeidet doppeltes Caching (OS + InnoDB)
innodb_flush_method = O_DIRECT

# Flush bei jedem Commit (1 = sicher, 2 = schneller aber minimal riskant)
innodb_flush_log_at_trx_commit = 1

# === Verbindungen ===
# Maximale gleichzeitige Verbindungen
max_connections = 150

# Timeout für inaktive Verbindungen (Sekunden)
wait_timeout = 300
interactive_timeout = 300

# === Query Cache (veraltet, aber auf manchen Setups noch relevant) ===
# Ab MariaDB 10.6+ ist der Query Cache entfernt
# query_cache_type = 0

# === Temporäre Tabellen ===
tmp_table_size = 64M
max_heap_table_size = 64M

# === Zeichensatz ===
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

# === Logging ===
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow-query.log
long_query_time = 2

Nach dem Speichern MariaDB neu starten:

sudo systemctl restart mariadb

Werte ans System anpassen

RAMinnodb_buffer_pool_sizemax_connections
1 GB512M50
2 GB1G100
4 GB3G150
8 GB5-6G200
16+ GB10-12G300+
📌 Tipp: Prüfe die aktuelle Buffer-Pool-Auslastung mit: SHOW ENGINE INNODB STATUS\G — Dort findest du unter „BUFFER POOL AND MEMORY“ wertvolle Infos.

Backups einrichten

Ohne Backups ist alles andere wertlos. Hier zeige ich drei Methoden — von einfach bis professionell.

Methode 1: mysqldump (logisches Backup)

mysqldump exportiert Datenbanken als SQL-Dateien. Ideal für kleine bis mittlere Datenbanken.

# Einzelne Datenbank sichern
sudo mysqldump --single-transaction --routines --triggers meine_app > /backup/meine_app_$(date +%F).sql

# Alle Datenbanken sichern
sudo mysqldump --single-transaction --all-databases --routines --triggers > /backup/all_databases_$(date +%F).sql

# Komprimiert sichern (spart viel Platz)
sudo mysqldump --single-transaction --all-databases | sudo gzip > /backup/all_databases_$(date +%F).sql.gz

Wiederherstellen:

sudo mariadb meine_app < /backup/meine_app_2026-02-17.sql

# Komprimiert
sudo gunzip < /backup/all_databases_2026-02-17.sql.gz | sudo mariadb

Methode 2: mariabackup (physisches Backup)

mariabackup (basierend auf Percona XtraBackup) erstellt ein physisches Backup — schneller und besser geeignet für große Datenbanken.

# Installieren
sudo apt install mariadb-backup -y

# Vollbackup erstellen
sudo mariabackup --backup --target-dir=/backup/full_$(date +%F)

# Backup vorbereiten (nötig vor der Wiederherstellung)
sudo mariabackup --prepare --target-dir=/backup/full_2026-02-17

# Wiederherstellen (MariaDB muss gestoppt sein!)
sudo systemctl stop mariadb
sudo rm -rf /var/lib/mysql/*
sudo mariabackup --copy-back --target-dir=/backup/full_2026-02-17
sudo chown -R mysql:mysql /var/lib/mysql
sudo systemctl start mariadb

Methode 3: Automatisierung mit systemd-Timer

Erstelle einen systemd-Service und Timer für tägliche Backups:

# Backup-Verzeichnis anlegen
sudo mkdir -p /backup/mariadb

Service-Datei erstellen:

sudo cat > /etc/systemd/system/mariadb-backup.service <<EOF
[Unit]
Description=MariaDB Backup
After=mariadb.service

[Service]
Type=oneshot
ExecStart=/bin/bash -c 'mysqldump --single-transaction --all-databases | gzip > /backup/mariadb/all_databases_$(date +%%F_%%H%%M).sql.gz'
ExecStartPost=/bin/bash -c 'find /backup/mariadb -name "*.sql.gz" -mtime +7 -delete'
EOF

Timer-Datei erstellen (täglich um 3:00 Uhr):

sudo cat > /etc/systemd/system/mariadb-backup.timer <<EOF
[Unit]
Description=Tägliches MariaDB-Backup

[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true

[Install]
WantedBy=timers.target
EOF

# Aktivieren
sudo systemctl daemon-reload
sudo systemctl enable --now mariadb-backup.timer

# Status prüfen
sudo systemctl list-timers | sudo grep mariadb
✅ Profi-Tipp: Speichere Backups zusätzlich auf einem externen Server oder in der Cloud (S3, rsync, etc.). Ein Backup, das auf demselben Server liegt wie die Datenbank, hilft bei Hardware-Ausfall nicht.

Remote-Zugriff sicher einrichten

Standardmäßig hört MariaDB nur auf 127.0.0.1 (localhost). Für Remote-Zugriff sind mehrere Schritte nötig.

🔒 Sicherheitswarnung: Remote-Zugriff auf eine Datenbank ist immer ein Risiko. Nutze ihn nur, wenn wirklich nötig, und sichere ihn mit Firewall + SSL ab!

Schritt 1: Bind-Address ändern

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Ändere:

# Auf allen Interfaces lauschen
bind-address = 0.0.0.0

# Oder nur auf einer bestimmten IP
# bind-address = 192.168.1.100
sudo systemctl restart mariadb

Schritt 2: Remote-Benutzer anlegen

sudo mariadb

-- Benutzer mit Zugriff von bestimmter IP
CREATE USER 'remote_user'@'192.168.1.50'
  IDENTIFIED BY 'SehrSicheres_Passw0rt!';

GRANT ALL PRIVILEGES ON meine_app.*
  TO 'remote_user'@'192.168.1.50';

FLUSH PRIVILEGES;

Schritt 3: Firewall konfigurieren

# Mit nftables (Debian 13 Standard)
sudo nft add rule inet filter input tcp dport 3306 ip saddr 192.168.1.50 accept
sudo nft add rule inet filter input tcp dport 3306 drop

# Oder mit ufw (falls installiert)
sudo ufw allow from 192.168.1.50 to any port 3306
sudo ufw deny 3306

Schritt 4: SSL/TLS aktivieren

Für verschlüsselte Verbindungen über das Netzwerk:

# Zertifikate generieren (MariaDB bringt ein Hilfstool mit)
sudo mysql_ssl_rsa_setup

# Oder manuell mit OpenSSL
sudo mkdir -p /etc/mysql/ssl
sudo cd /etc/mysql/ssl

# CA-Schlüssel und -Zertifikat
sudo openssl genrsa 4096 > ca-key.pem
sudo openssl req -new -x509 -nodes -days 3650 -key ca-key.pem -out ca-cert.pem -subj "/CN=MariaDB-CA"

# Server-Schlüssel und -Zertifikat
sudo openssl genrsa 4096 > server-key.pem
sudo openssl req -new -key server-key.pem -out server-req.pem -subj "/CN=MariaDB-Server"
sudo openssl x509 -req -in server-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem

# Berechtigungen setzen
sudo chown mysql:mysql /etc/mysql/ssl/*
sudo chmod 600 /etc/mysql/ssl/*-key.pem

In der MariaDB-Konfiguration aktivieren:

# In /etc/mysql/mariadb.conf.d/99-custom.cnf unter [mysqld] ergänzen:
[mysqld]
ssl-ca = /etc/mysql/ssl/ca-cert.pem ssl-cert = /etc/mysql/ssl/server-cert.pem ssl-key = /etc/mysql/ssl/server-key.pem # SSL erzwingen für Remote-Benutzer # (In MariaDB nach dem Neustart) ALTER USER 'remote_user'@'192.168.1.50' REQUIRE SSL;
sudo systemctl restart mariadb

# SSL-Status prüfen
sudo mariadb -e "SHOW VARIABLES LIKE '%ssl%';"

Monitoring & Logs

Eine laufende Datenbank muss überwacht werden. MariaDB bietet mehrere eingebaute Werkzeuge.

Error Log

Das Error Log zeigt Fehler, Warnungen und den Startverlauf:

# Speicherort prüfen
sudo mariadb -e "SHOW VARIABLES LIKE 'log_error';"

# Typisch:
sudo tail -f /var/log/mysql/error.log

Slow Query Log

Finde langsame Queries, die deine Datenbank ausbremsen:

# Aktivierung prüfen (sollte schon in unserer Custom-Config aktiv sein)
sudo mariadb -e "SHOW VARIABLES LIKE 'slow_query%';"
sudo mariadb -e "SHOW VARIABLES LIKE 'long_query_time';"

# Log analysieren
sudo mysqldumpslow -s t /var/log/mysql/slow-query.log

mysqldumpslow gruppiert ähnliche Queries und zeigt die schlimmsten Übeltäter.

Live-Status abfragen

# Aktive Verbindungen und Queries
sudo mariadb -e "SHOW PROCESSLIST;"

# Globaler Status
sudo mariadb -e "SHOW GLOBAL STATUS LIKE 'Threads_connected';"
sudo mariadb -e "SHOW GLOBAL STATUS LIKE 'Slow_queries';"
sudo mariadb -e "SHOW GLOBAL STATUS LIKE 'Uptime';"

# InnoDB-Status (sehr detailliert)
sudo mariadb -e "SHOW ENGINE INNODB STATUS\G"

Nützliche Status-Queries

-- Cache-Hit-Rate (sollte > 99% sein)
SELECT
  (1 - (
    (SELECT VARIABLE_VALUE FROM information_schema.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_buffer_pool_reads') /
    (SELECT VARIABLE_VALUE FROM information_schema.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_buffer_pool_read_requests')
  )) * 100 AS buffer_pool_hit_rate;

-- Verbindungsauslastung
SELECT
  VARIABLE_VALUE AS current_connections
FROM information_schema.GLOBAL_STATUS
WHERE VARIABLE_NAME = 'Threads_connected';

Zusammenfassung & Checkliste

Hier eine Checkliste für eine sichere, produktionsreife MariaDB-Installation:

Aufgabe
MariaDB installiert und gestartet
mariadb-secure-installation durchgeführt
Anonyme Benutzer entfernt
Remote-Root-Login deaktiviert
Test-Datenbank entfernt
Eigene Benutzer mit minimalen Rechten angelegt
InnoDB-Buffer-Pool an RAM angepasst
Slow Query Log aktiviert
Automatische Backups eingerichtet
Backups auf externen Speicher kopiert
Firewall konfiguriert (Port 3306 eingeschränkt)
SSL/TLS für Remote-Verbindungen aktiviert

Troubleshooting

Problem: Root-Passwort vergessen

Wenn du dich nicht mehr als root anmelden kannst:

# 1. MariaDB stoppen
sudo systemctl stop mariadb

# 2. Im abgesicherten Modus starten (ohne Authentifizierung)
sudo mysqld_safe --skip-grant-tables --skip-networking &

# 3. Einloggen (ohne Passwort)
sudo mariadb

# 4. Passwort zurücksetzen
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NeuesPasswort123!';
EXIT;

# 5. Abgesicherten Modus beenden
sudo kill $(cat /var/run/mysqld/mysqld.pid)

# 6. MariaDB normal starten
sudo systemctl start mariadb

Problem: MariaDB startet nicht

# Fehlerlog prüfen
sudo journalctl -xeu mariadb

# Häufige Ursachen:
# - Falsche Syntax in der Config → Config-Dateien prüfen
# - Port bereits belegt → lsof -i :3306
# - Nicht genug RAM → innodb_buffer_pool_size reduzieren
# - Datei-Berechtigungen → chown -R mysql:mysql /var/lib/mysql

Problem: „Too many connections“

# Aktuelle Verbindungen anzeigen
sudo mariadb -e "SHOW PROCESSLIST;"

# Sleeping-Connections finden und beenden
sudo mariadb -e "SELECT ID, USER, HOST, TIME, STATE FROM information_schema.PROCESSLIST WHERE COMMAND = 'Sleep' AND TIME > 300;"

# max_connections erhöhen (temporär, sofort wirksam)
sudo mariadb -e "SET GLOBAL max_connections = 200;"

# Permanent in /etc/mysql/mariadb.conf.d/99-custom.cnf ändern

Problem: Langsame Queries

# Slow Query Log auswerten
sudo mysqldumpslow -s t -t 10 /var/log/mysql/slow-query.log

# Query-Ausführungsplan analysieren
sudo mariadb -e "EXPLAIN SELECT * FROM tabelle WHERE spalte = 'wert'\G"

# Fehlende Indizes finden
sudo mariadb -e "SELECT * FROM sys.statements_with_full_table_scans LIMIT 10;"

# Index hinzufügen
sudo mariadb -e "ALTER TABLE tabelle ADD INDEX idx_spalte (spalte);"

Problem: Datenbank ist korrupt

# Alle Tabellen prüfen
sudo mysqlcheck --all-databases --check

# Reparieren
sudo mysqlcheck --all-databases --repair

# InnoDB-Recovery (nur im Notfall!)
# In /etc/mysql/mariadb.conf.d/99-custom.cnf:
# innodb_force_recovery = 1
# (Werte 1-6, starte mit 1 und erhöhe bei Bedarf)

Nächste Schritte

Deine MariaDB-Installation ist jetzt sicher, optimiert und mit Backups ausgestattet. Hier sind sinnvolle nächste Schritte:

  • Webserver einrichten — Nginx oder Apache mit PHP installieren, um Webanwendungen mit MariaDB zu verbinden
  • WordPress installieren — Die beliebteste Webanwendung nutzt MariaDB als Datenbank
  • Replikation einrichten — Für Hochverfügbarkeit: Master-Slave- oder Galera-Cluster-Replikation
  • Monitoring-Stack — Prometheus + Grafana mit dem MariaDB-Exporter für professionelles Monitoring
  • Automatisierung — Ansible-Playbooks für MariaDB-Deployment auf mehreren Servern
📌 Bleib dran: In den nächsten Tutorials dieser Serie richten wir Nginx, PHP und WordPress ein — alles auf Debian 13.

Hast du Fragen oder Probleme? Schreib einen Kommentar — ich helfe gerne!