> For the complete documentation index, see [llms.txt](https://docs.instantroot.de/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.instantroot.de/kvm-server/linux/mariadb-installieren.md).

# MariaDB installieren

MariaDB ist ein Datenbankserver und wird häufig für Webseiten, Anwendungen, Webpanels, Shopsysteme, Foren, Bots und eigene Projekte verwendet.

In diesem Artikel erklären wir dir, wie du MariaDB auf einem Linux KVM-Server installierst, absicherst und eine erste Datenbank mit Benutzer anlegst.

### Was ist MariaDB?

MariaDB ist ein relationaler Datenbankserver.

Eine Datenbank speichert strukturierte Daten. Anwendungen nutzen Datenbanken zum Beispiel für:

* Benutzerkonten
* Einstellungen
* Beiträge
* Produkte
* Bestellungen
* Logdaten
* Spielerdaten
* Sitzungen
* Konfigurationen

MariaDB ist mit vielen Anwendungen kompatibel, die auch MySQL unterstützen.

### Voraussetzungen

Du benötigst:

* einen KVM-Server mit Linux
* Root-Zugriff oder einen Benutzer mit sudo-Rechten
* eine SSH-Verbindung zum Server
* grundlegende Kenntnisse im Umgang mit der Konsole

Diese Anleitung eignet sich besonders für:

* Debian
* Ubuntu

Bei AlmaLinux oder Rocky Linux sind einzelne Befehle anders.

### Mit dem Server verbinden

Verbinde dich zuerst per SSH mit deinem Server.

Beispiel:

`ssh root@SERVER-IP`

Ersetze `SERVER-IP` durch die IP-Adresse deines KVM-Servers.

Wenn du einen eigenen SSH-Port verwendest, gib den Port zusätzlich an.

Beispiel:

`ssh root@SERVER-IP -p 2222`

### Paketlisten aktualisieren

Aktualisiere zuerst die Paketlisten.

Befehl:

`apt update`

Danach solltest du vorhandene Updates installieren.

Befehl:

`apt upgrade`

Wenn wichtige Systemupdates installiert wurden, kann ein Neustart sinnvoll sein.

Befehl:

`reboot`

### MariaDB installieren

Installiere MariaDB mit folgendem Befehl:

`apt install mariadb-server mariadb-client`

Während der Installation werden der MariaDB-Server und das passende Client-Programm installiert.

Der Serverdienst wird danach meistens automatisch gestartet.

### MariaDB-Dienst prüfen

Prüfe nach der Installation, ob MariaDB läuft.

Befehl:

`systemctl status mariadb`

Wenn der Dienst aktiv ist, wird der Status als `active` oder `running` angezeigt.

Falls MariaDB nicht läuft, kannst du den Dienst starten.

Befehl:

`systemctl start mariadb`

Damit MariaDB nach einem Neustart automatisch startet, aktiviere den Dienst.

Befehl:

`systemctl enable mariadb`

### MariaDB absichern

Nach der Installation solltest du MariaDB absichern.

Dafür gibt es ein eigenes Sicherheitsprogramm.

Befehl:

`mysql_secure_installation`

Das Programm stellt mehrere Fragen.

Typische Empfehlungen:

| Frage                              | Empfehlung                      |
| ---------------------------------- | ------------------------------- |
| Root-Passwort setzen oder ändern   | Ja, wenn noch keins gesetzt ist |
| Anonyme Benutzer entfernen         | Ja                              |
| Root-Login aus der Ferne verbieten | Ja                              |
| Testdatenbank entfernen            | Ja                              |
| Rechte-Tabellen neu laden          | Ja                              |

Je nach MariaDB-Version können die Fragen etwas anders formuliert sein.

### Bei MariaDB anmelden

Nach der Installation kannst du dich lokal am Datenbankserver anmelden.

Befehl:

`mariadb`

oder:

`mysql`

Auf vielen Debian- und Ubuntu-Systemen funktioniert die Anmeldung als Root-Benutzer über das lokale Systemkonto.

Wenn ein Passwort benötigt wird, nutze:

`mariadb -u root -p`

Danach wirst du nach dem MariaDB-Root-Passwort gefragt.

### Datenbank erstellen

Erstelle eine neue Datenbank.

Beispiel:

`CREATE DATABASE webseite;`

Der Name `webseite` ist nur ein Beispiel. Du kannst einen eigenen Namen verwenden.

Empfehlung:

* nur Kleinbuchstaben verwenden
* keine Leerzeichen verwenden
* eindeutigen Namen nutzen

Beispiel:

`CREATE DATABASE minecraft_stats;`

### Datenbankbenutzer erstellen

Erstelle einen eigenen Benutzer für deine Anwendung.

Beispiel:

`CREATE USER 'webuser'@'localhost' IDENTIFIED BY 'sicheres_passwort';`

Ersetze:

* `webuser` durch den gewünschten Benutzernamen
* `sicheres_passwort` durch ein starkes Passwort

Verwende nicht denselben Benutzer für alle Anwendungen.

### Rechte vergeben

Damit der Benutzer auf die Datenbank zugreifen kann, musst du Rechte vergeben.

Beispiel:

`GRANT ALL PRIVILEGES ON webseite.* TO 'webuser'@'localhost';`

Damit darf der Benutzer `webuser` auf alle Tabellen der Datenbank `webseite` zugreifen.

Danach Rechte neu laden:

`FLUSH PRIVILEGES;`

MariaDB verlassen:

`EXIT;`

### Verbindung testen

Teste, ob der neue Benutzer funktioniert.

Befehl:

`mariadb -u webuser -p webseite`

Gib danach das Passwort des Benutzers ein.

Wenn die Anmeldung funktioniert, ist der Benutzer korrekt eingerichtet.

MariaDB wieder verlassen:

`EXIT;`

### Datenbank für eine Webseite verwenden

Viele Webseiten oder Anwendungen fragen bei der Installation nach Datenbankdaten.

Typische Angaben sind:

| Feld           | Wert                            |
| -------------- | ------------------------------- |
| Datenbank-Host | `localhost`                     |
| Datenbank-Port | `3306`                          |
| Datenbankname  | Name deiner Datenbank           |
| Benutzername   | Name deines Datenbankbenutzers  |
| Passwort       | Passwort des Datenbankbenutzers |

Wenn die Anwendung auf demselben Server läuft wie MariaDB, ist der Host meistens `localhost`.

### MariaDB von außen erreichbar machen

Standardmäßig sollte MariaDB nicht öffentlich aus dem Internet erreichbar sein.

Das ist aus Sicherheitsgründen sinnvoll.

Wenn eine Anwendung auf demselben Server läuft, brauchst du keinen externen Zugriff.

Wenn du MariaDB trotzdem von einem anderen Server aus erreichen möchtest, musst du die Konfiguration ändern und die Firewall anpassen.

**Wichtig:** Öffne MariaDB nicht öffentlich für das gesamte Internet, wenn es nicht notwendig ist.

### Bind-Adresse prüfen

Die MariaDB-Konfiguration befindet sich je nach System an unterschiedlichen Stellen.

Häufige Datei:

`/etc/mysql/mariadb.conf.d/50-server.cnf`

Öffne die Datei:

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

Suche nach:

`bind-address`

Wenn MariaDB nur lokal erreichbar sein soll, sollte dort stehen:

`bind-address = 127.0.0.1`

Wenn MariaDB von außen erreichbar sein soll, kann die Adresse angepasst werden.

Beispiel:

`bind-address = 0.0.0.0`

Danach MariaDB neu starten:

`systemctl restart mariadb`

**Wichtig:** `0.0.0.0` bedeutet, dass MariaDB auf allen Netzwerkadressen lauscht. Nutze das nur, wenn du genau weißt, was du tust.

### Firewall für MariaDB

Der Standardport von MariaDB ist `3306`.

Wenn MariaDB nur lokal genutzt wird, muss dieser Port nicht in der Firewall geöffnet werden.

Wenn externer Zugriff nötig ist, solltest du den Zugriff nur für bestimmte IP-Adressen erlauben.

Beispiel mit UFW:

`ufw allow from 123.123.123.123 to any port 3306 proto tcp`

Ersetze `123.123.123.123` durch die IP-Adresse des Servers oder Systems, das auf MariaDB zugreifen darf.

Nicht empfohlen:

`ufw allow 3306/tcp`

Dieser Befehl öffnet MariaDB für alle erreichbaren Quellen.

### Benutzer für externen Zugriff erstellen

Wenn ein Benutzer von einem anderen Server zugreifen soll, reicht `'localhost'` nicht aus.

Beispiel für Zugriff von einer bestimmten IP-Adresse:

`CREATE USER 'remoteuser'@'123.123.123.123' IDENTIFIED BY 'sicheres_passwort';`

Rechte vergeben:

`GRANT ALL PRIVILEGES ON webseite.* TO 'remoteuser'@'123.123.123.123';`

Rechte neu laden:

`FLUSH PRIVILEGES;`

Für öffentliche Zugriffe mit `%` solltest du sehr vorsichtig sein.

Beispiel:

`'remoteuser'@'%'`

Das bedeutet, dass sich der Benutzer grundsätzlich von überall verbinden darf, sofern Firewall und MariaDB-Konfiguration es erlauben.

### MariaDB neu starten

Nach Konfigurationsänderungen musst du MariaDB neu starten.

Befehl:

`systemctl restart mariadb`

Status prüfen:

`systemctl status mariadb`

### MariaDB-Logs prüfen

Wenn MariaDB nicht startet oder eine Verbindung fehlschlägt, helfen die Logs.

Befehl:

`journalctl -u mariadb`

Für aktuelle Meldungen:

`journalctl -u mariadb -f`

Je nach System können zusätzliche Logs in folgenden Verzeichnissen liegen:

* `/var/log/mysql/`
* `/var/log/mariadb/`

### Datenbank sichern

Erstelle regelmäßig Backups deiner Datenbanken.

Eine einzelne Datenbank sicherst du mit:

`mysqldump -u root -p webseite > webseite.sql`

Alle Datenbanken sicherst du mit:

`mysqldump -u root -p --all-databases > alle-datenbanken.sql`

Die erzeugte `.sql`-Datei solltest du sicher speichern und nicht öffentlich erreichbar ablegen.

### Datenbank wiederherstellen

Eine Datenbank kannst du aus einer SQL-Datei wiederherstellen.

Beispiel:

`mariadb -u root -p webseite < webseite.sql`

Achte darauf, dass die Datenbank vorher existiert.

Falls nicht, erstelle sie vorher:

`CREATE DATABASE webseite;`

### MariaDB deinstallieren

Wenn du MariaDB nicht mehr benötigst, kannst du es entfernen.

Befehl:

`apt remove mariadb-server mariadb-client`

Konfigurationsdateien und Datenbanken können dabei weiterhin vorhanden bleiben.

Wenn du MariaDB vollständig entfernen möchtest, nutze:

`apt purge mariadb-server mariadb-client`

**Wichtig:** Dabei können Konfigurationen entfernt werden. Sichere vorher wichtige Datenbanken.

### Häufige Probleme

#### Anmeldung als root funktioniert nicht

Auf vielen Debian- und Ubuntu-Systemen nutzt MariaDB für den lokalen Root-Zugriff ein Socket-Login.

Versuche:

`sudo mariadb`

oder melde dich direkt als Root-Benutzer am Server an und starte:

`mariadb`

Wenn du ein Passwort setzen möchtest, kannst du einen eigenen Datenbankbenutzer mit Administratorrechten erstellen.

#### Access denied for user

Diese Meldung bedeutet, dass Benutzername, Passwort, Host oder Rechte nicht passen.

Prüfe:

* richtiger Benutzername
* richtiges Passwort
* richtiger Host, zum Beispiel `localhost`
* Benutzer wurde für den richtigen Host erstellt
* Rechte wurden vergeben
* `FLUSH PRIVILEGES` wurde ausgeführt

#### Unknown database

Die angegebene Datenbank existiert nicht oder der Name wurde falsch geschrieben.

Prüfe vorhandene Datenbanken mit:

`SHOW DATABASES;`

#### Can't connect to local server

MariaDB läuft möglicherweise nicht.

Prüfe den Dienst:

`systemctl status mariadb`

Starte MariaDB bei Bedarf:

`systemctl start mariadb`

#### Verbindung von außen funktioniert nicht

Prüfe:

* lauscht MariaDB auf der richtigen Adresse?
* ist `bind-address` korrekt gesetzt?
* ist Port `3306` in der Firewall erlaubt?
* wurde der Benutzer für die richtige Quell-IP erstellt?
* blockiert eine externe Firewall die Verbindung?
* läuft MariaDB überhaupt?

#### Port 3306 ist öffentlich offen

Wenn MariaDB nicht öffentlich erreichbar sein muss, schließe den Port.

Bei UFW:

`ufw deny 3306/tcp`

Prüfe danach:

`ufw status`

### Sicherheitshinweise

MariaDB sollte nur so offen erreichbar sein wie nötig.

Empfehlungen:

* keine schwachen Datenbankpasswörter verwenden
* keine öffentlichen Root-Zugänge erlauben
* Datenbankport nicht unnötig öffnen
* eigene Benutzer pro Anwendung erstellen
* Rechte nur für benötigte Datenbanken vergeben
* regelmäßige Backups erstellen
* MariaDB und das Betriebssystem aktuell halten
* Backups nicht im öffentlichen Webverzeichnis speichern

### Support kontaktieren

Wenn MariaDB nicht funktioniert und du Hilfe benötigst, kontaktiere den Support.

Gib dabei bitte folgende Informationen an:

* Betriebssystem
* MariaDB-Version, falls bekannt
* genaue Fehlermeldung
* betroffener Benutzer
* ob der Zugriff lokal oder extern erfolgen soll
* ob MariaDB gestartet ist
* was du bereits versucht hast

Sende keine Datenbankpasswörter oder private Zugangsdaten an den Support.
