MariaDB ist ein freies, zu MySQL kompatibles Datenbanksystem und die Standarddatenbank unter Debian und Ubuntu. Diese Anleitung zeigt, wie Sie MariaDB installieren, grundlegend absichern, eine Datenbank für eine Anwendung anlegen und regelmäßige Sicherungen einrichten.

Schritt 1: MariaDB installieren

sudo apt update
sudo apt install -y mariadb-server
sudo systemctl status mariadb --no-pager

Der Dienst wird automatisch gestartet und beim Booten aktiviert. Die installierte Version zeigt:

mariadb --version

Schritt 2: Grundabsicherung

MariaDB bringt ein Skript mit, das die wichtigsten Sicherheitseinstellungen vornimmt:

sudo mariadb-secure-installation

Empfohlene Antworten:

  • Enter current password for root: einfach Enter drücken
  • Switch to unix_socket authentication: n, unter Debian und Ubuntu ist das bereits aktiv
  • Change the root password: n. Root meldet sich über den Systembenutzer root an und braucht kein eigenes Passwort.
  • Remove anonymous users: Y
  • Disallow root login remotely: Y
  • Remove test database: Y
  • Reload privilege tables: Y

Als Root-Benutzer des Servers melden Sie sich nun ohne Passwort an der Datenbank an:

sudo mariadb

Schritt 3: Datenbank und Benutzer anlegen

Verwenden Sie für jede Anwendung eine eigene Datenbank und einen eigenen Benutzer mit nur den nötigen Rechten:

sudo mariadb <<'EOF'
CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'EinSehrLangesPasswort!2026';
GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'localhost';
FLUSH PRIVILEGES;
EOF

Ersetzen Sie Datenbankname, Benutzer und Passwort. Ein sicheres Passwort erzeugen Sie zum Beispiel mit openssl rand -base64 24.

Testen Sie die Anmeldung mit dem neuen Benutzer:

mariadb -u appuser -p appdb -e "SELECT DATABASE(), CURRENT_USER();"

Schritt 4: Netzwerkzugriff

Standardmäßig lauscht MariaDB nur auf 127.0.0.1 und ist von außen nicht erreichbar. Prüfen Sie das mit:

sudo ss -tlpn | grep 3306

Die Ausgabe sollte 127.0.0.1:3306 zeigen. Lassen Sie diese Einstellung möglichst unverändert. Für den Zugriff von Ihrem Computer, etwa mit HeidiSQL oder DBeaver, verwenden Sie einen SSH-Tunnel:

ssh -L 3306:127.0.0.1:3306 benutzer@IHRE-SERVER-IP

Ihr Datenbankprogramm verbindet sich dann mit 127.0.0.1:3306 auf Ihrem eigenen Computer. Viele Programme bieten die SSH-Verbindung auch direkt in den Verbindungseinstellungen an.

Wenn ein anderer Server zugreifen muss

Benötigt ein anderer Server direkten Zugriff, setzen Sie in /etc/mysql/mariadb.conf.d/50-server.cnf die Option bind-address auf die interne IP-Adresse des Servers. Legen Sie den Benutzer dann mit der IP-Adresse des zugreifenden Servers an, also 'appuser'@'10.0.0.5'. Erlauben Sie den Port 3306 in der Firewall nur für diese Adresse. Öffnen Sie den Datenbankport niemals für das gesamte Internet.

Schritt 5: Grundlegende Leistungseinstellungen

Der wichtigste Wert ist die Größe des Zwischenspeichers für Daten und Indizes, innodb_buffer_pool_size. Auf einem Server, der hauptsächlich als Datenbankserver dient, sind 50 bis 70 % des Arbeitsspeichers üblich. Läuft auf dem Server zusätzlich eine Webanwendung, wählen Sie einen kleineren Wert:

sudo tee /etc/mysql/mariadb.conf.d/99-custom.cnf > /dev/null <<'EOF'
[mysqld]
innodb_buffer_pool_size = 1G
max_connections = 100
EOF
sudo systemctl restart mariadb

Schritt 6: Regelmäßige Sicherung

Dieses Beispiel sichert alle Datenbanken täglich um 2:30 Uhr und bewahrt die Sicherungen 14 Tage lang auf:

sudo mkdir -p /var/backups/mariadb
sudo tee /etc/cron.d/mariadb-backup > /dev/null <<'EOF'
30 2 * * * root mariadb-dump --all-databases --single-transaction --routines --events | gzip > /var/backups/mariadb/all-$(date +\%F).sql.gz && find /var/backups/mariadb -name '*.sql.gz' -mtime +14 -delete
EOF

Die Option --single-transaction erstellt eine konsistente Sicherung, ohne InnoDB-Tabellen zu sperren. Kopieren Sie die Sicherungen zusätzlich auf einen externen Speicher, etwa mit restic, siehe Server-Backups mit restic auf ein externes Ziel.

Eine Sicherung spielen Sie so wieder ein:

gunzip < /var/backups/mariadb/all-2026-10-26.sql.gz | sudo mariadb

Updates

MariaDB erhält Sicherheitsupdates über die normalen Paketquellen Ihrer Distribution. Mit unattended-upgrades werden diese automatisch installiert. Versionssprünge, etwa bei einem Upgrade der Distribution, prüfen Sie vorher in einer Testumgebung.

Fehlerbehebung

„Access denied for user 'root'@'localhost'“

Melden Sie sich mit sudo mariadb an, nicht mit mariadb -u root -p. Root verwendet die Anmeldung über den Systembenutzer.

MariaDB startet nicht

Prüfen Sie die Fehlermeldung mit sudo journalctl -u mariadb -n 50. Häufige Ursachen sind eine volle Festplatte oder ein zu großer Wert für innodb_buffer_pool_size.

„Too many connections“

Ihre Anwendung öffnet mehr Verbindungen als erlaubt. Erhöhen Sie max_connections moderat oder prüfen Sie, ob die Anwendung Verbindungen richtig schließt.

Wie Sie dazu einen Webserver einrichten, zeigt der Artikel nginx mit PHP-FPM unter Debian und Ubuntu einrichten.

War diese Antwort hilfreich? 0 Benutzer fanden dies hilfreich (0 Stimmen)