Zum Inhalt springen
Aktueller Gutschein:10 % RabattIn der Bestellung einlösen

Datenbanken für Gameserver in Pterodactyl (Database Host)

Richten Sie MariaDB so ein, dass Gameserver in Pterodactyl eigene Datenbanken für Plugins anlegen können: ein Panel-Konto, bind-address, die Firewall und ein Database Host im Panel.

  • Experte
  • ~20 Min.
  • Aktualisiert am 9.10.2026

Plugins wie LuckPerms oder CoreProtect speichern ihre Daten in einer MySQL-Datenbank. Wir richten MariaDB als Database Host für Pterodactyl ein, damit Benutzer mit einem Klick im Panel eine Datenbank für ihren Server anlegen können.

Was Sie brauchen

  • Pterodactyl Panel (Anleitung) und Wings (Anleitung) auf demselben VPS
  • MariaDB aus der Panel-Installation
  • Eine SSH-Verbindung als root
  • Etwa 20 Minuten

So funktioniert es#

Wenn ein Benutzer in der Registerkarte Databases seines Servers auf New Database klickt, verbindet sich das Panel mit dem Database Host und legt eine Datenbank s<Server-ID>_<Name> und einen Benutzer u<Server-ID>_<zufällige Zeichen> mit einem zufälligen Passwort an. Der Gameserver verbindet sich dann aus seinem Container mit dieser Datenbank.

Das Schlüsselwort ist Container. In einem Container bedeutet die Adresse 127.0.0.1 den Container selbst, nicht den VPS. Der Gameserver findet MariaDB also nicht unter 127.0.0.1. Auf demselben VPS erreichen Container den Server selbst jedoch unter 172.18.0.1 (die von Wings erstellte Schnittstelle pterodactyl0). Diese Adresse verwenden wir für den Database Host:

Wer sich verbindetVonNach
Panel (legt Datenbanken und Benutzer an)vom VPS, Quelladresse 172.18.0.1172.18.0.1:3306
Gameserver (Plugin)aus dem Container, Adresse 172.18.0.x172.18.0.1:3306

Prüfen Sie, dass die Schnittstelle existiert (Wings muss mindestens einmal gelaufen sein):

bash
ip -4 addr show pterodactyl0
  • ip -4 addr show pterodactyl0 – gibt die IPv4-⁠Adresse der Schnittstelle pterodactyl0 aus.

Die Ausgabe enthält die Zeile inet 172.18.0.1/16. Meldet der Befehl Device "pterodactyl0" does not exist, ist Wings noch nicht gelaufen; schließen Sie zuerst seine Installation ab.

Ein Konto für das Panel#

Das Panel braucht ein MariaDB-Konto, das Datenbanken und Benutzer anlegen und ihnen Rechte erteilen kann. Verwenden Sie nicht das Konto pterodactyl aus der Panel-Installation; es hat nur Rechte auf die Datenbank panel.

  1. Erzeugen Sie ein starkes Passwort nur aus Buchstaben und Ziffern (Passwortgenerator).

  2. Melden Sie sich an MariaDB an:

    bash
    mariadb
  3. Legen Sie das Konto an. Ersetzen Sie <DB_HOST_PASSWORT> durch das Passwort aus Schritt 1:

    SQL
    CREATE USER 'pterodactyluser'@'172.18.0.1' IDENTIFIED BY '<DB_HOST_PASSWORT>';
    GRANT ALL PRIVILEGES ON *.* TO 'pterodactyluser'@'172.18.0.1' WITH GRANT OPTION;
    exit
TeilWas er bedeutet
'pterodactyluser'@'172.18.0.1'Der Benutzer darf sich nur von 172.18.0.1 anmelden, also nur von diesem VPS über die Docker-Schnittstelle. Niemand kann sich mit diesem Konto aus dem Internet anmelden, auch nicht mit dem richtigen Passwort.
ALL PRIVILEGES ON *.*Alle Rechte auf alle Datenbanken. Das Panel muss Datenbanken und Benutzer anlegen und löschen.
WITH GRANT OPTIONDas Konto darf anderen Benutzern Rechte erteilen. Ohne sie könnte das Panel einem neuen Datenbankbenutzer keinen Zugriff auf eine neue Datenbank geben, und das Anlegen würde scheitern.

Dieses Konto ist praktisch ein Datenbankadministrator

Wer sein Passwort kennt und auf den VPS gelangt, kann alle Datenbanken lesen und löschen, einschließlich der des Panels. Deshalb erlaubt das Konto nur den Host 172.18.0.1, und Sie sollten das Passwort nirgendwo anders als im Panel eingeben. Das Panel speichert das Passwort mit dem Schlüssel APP_KEY verschlüsselt.

MariaDB im Netz lauschen lassen#

Nach der Installation lauscht MariaDB nur auf 127.0.0.1 (die Einstellung bind-address in /etc/mysql/mariadb.conf.d/50-server.cnf). Container erreichen es dort nicht. Das ändern Sie mit einer eigenen Datei, die nach der Standarddatei geladen wird und sie überschreibt. So bleibt die Standarddatei unberührt, auch nach Paket-Updates.

  1. Erstellen Sie die Datei:

    bash
    nano /etc/mysql/mariadb.conf.d/60-pterodactyl.cnf
  2. Fügen Sie den Inhalt ein, speichern Sie und schließen Sie den Editor:

    /etc/mysql/mariadb.conf.d/60-pterodactyl.cnfini
    [mysqld]
    bind-address = 0.0.0.0
EinstellungWas sie tutEmpfohlener WertWann ändern
[mysqld]Die vom Datenbankserver gelesene Optionsgruppe (MariaDB 10.11 unter Ubuntu und 11.8 unter Debian).–Nie.
bind-addressAuf welchen Adressen MariaDB Verbindungen annimmt. 0.0.0.0 = alle IPv4-⁠Adressen des VPS.0.0.0.0Möchten Sie keinen Netzwerkzugriff, gehen Sie zurück zu 127.0.0.1 (löschen Sie diese Datei).
  1. Starten Sie MariaDB neu und prüfen Sie, wo es lauscht:

    bash
    systemctl restart mariadb
    ss -tlnp | grep 3306
    • ss -tlnp – listet lauschende TCP-Ports und Programme auf; grep 3306 wählt die MariaDB-Zeile aus.

    Sie sehen 0.0.0.0:3306 und den Prozessnamen mariadbd.

Warum nicht einfach bind-address = 172.18.0.1

MariaDB kann auch auf einer bestimmten Adresse lauschen. Die Schnittstelle pterodactyl0 wird aber erst von Docker erstellt, sobald es startet. Käme MariaDB beim Booten des VPS zuerst hoch, fände es die Adresse nicht und würde nicht starten. 0.0.0.0 zu verwenden und den Zugriff von außen mit der Firewall zu schließen ist sicherer.

Firewall#

MariaDB lauscht jetzt auch auf der öffentlichen IP-Adresse des VPS. Port 3306 muss für das Internet geschlossen bleiben. Die Datenbankbenutzer der Gameserver dürfen sich standardmäßig von überall (%) verbinden, könnten also von außen angemeldet werden.

Firewall im Kundenbereich (Anleitung):

  • Modus Alles blockieren außer Erlaubtem: Fügen Sie keine Regel für Port 3306 hinzu. Er ist geschlossen.
  • Modus Alles erlauben: Fügen Sie die Regel Eingehend · Verwerfen · TCP · Port 3306 hinzu.

Verbindungen von Containern zum VPS bleiben innerhalb des Servers, und die Firewall im Kundenbereich beeinflusst sie nicht.

UFW auf dem VPS: Haben Sie es aktiviert, blockiert es auch Verbindungen von Containern. Erlauben Sie Port 3306 nur von der Docker-Schnittstelle:

bash
ufw allow in on pterodactyl0 to any port 3306 proto tcp
  • allow in on pterodactyl0 – erlaubt eingehenden Verkehr nur von der Schnittstelle pterodactyl0 (von Gameserver-Containern).
  • to any port 3306 proto tcp – nur zu TCP-Port 3306.

Der Database Host im Panel#

  1. Klicken Sie im Admin-Bereich des Panels links auf Databases und dann auf Create New.
  2. Füllen Sie das Formular aus:
FeldWas eintragenWarum
NameZum Beispiel local-mariadbEin Name für den Host, für Sie; 1–⁠60 Zeichen.
Host172.18.0.1Die Adresse, mit der sich das Panel verbindet, und zugleich die Adresse, die Benutzer als Endpoint ihrer Datenbank sehen. Deshalb nicht 127.0.0.1.
Port3306Der MariaDB-Port.
UsernamepterodactyluserDas Konto aus Ein Konto für das Panel.
Password<DB_HOST_PASSWORT>Das Passwort dieses Kontos.
Linked NodeIhre NodeDatenbanken, die Benutzer von Servern auf dieser Node selbst anlegen, werden auf diesem Host erstellt. Ohne Verknüpfung wählt das Panel irgendeinen Host zufällig. Im Admin-Bereich wird dieser Host für Server auf dieser Node als Standard angeboten.
  1. Klicken Sie auf Create. Das Panel versucht sofort, sich mit dem Host zu verbinden. Scheitert das, zeigt es einen Fehler und speichert den Host nicht (siehe Fehlerbehebung).

Das Datenbanklimit des Servers#

Ein Benutzer kann nur so viele Datenbanken anlegen, wie Sie erlauben. Das Standardlimit ist 0, dann sagt die Registerkarte Databases Databases cannot be created for this server.

  1. Öffnen Sie im Admin-Bereich Servers und klicken Sie auf den Server.
  2. Wechseln Sie zur Registerkarte Build Configuration.
  3. Setzen Sie unter Application Feature Limits das Database Limit, zum Beispiel 2.
  4. Klicken Sie auf Update Build Configuration.

Eine Datenbank vom Server aus anlegen#

Diesen Teil erledigt der Benutzer des Servers:

  1. Öffnen Sie im Panel den Server und seine Registerkarte Databases.
  2. Klicken Sie auf New Database.
  3. Füllen Sie Database Name aus, zum Beispiel luckperms. Der resultierende Name lautet s<ID>_luckperms. Erlaubt sind Buchstaben, Ziffern, - und _, 3–⁠48 Zeichen lang.
  4. Das Feld Connections From legt fest, von wo sich der Datenbankbenutzer verbinden darf. Ein sicherer Wert für Gameserver auf dieser Node ist 172.18.0.% (alle Container). Ein leeres Feld bedeutet %, also von überall.
  5. Klicken Sie auf Create Database.
  6. Klicken Sie auf das Augensymbol neben der neuen Datenbank. Es zeigt Endpoint (172.18.0.1:3306), Connections from, Username, Password und JDBC Connection String.

Tragen Sie diese Daten in die Konfiguration des Plugins ein. Die meisten Plugins möchten Adresse, Datenbankname, Benutzer und Passwort getrennt. Zum Beispiel LuckPerms in plugins/LuckPerms/config.yml:

plugins/LuckPerms/config.ymlYAML
storage-method: MariaDB
data:
  address: 172.18.0.1:3306
  database: s1_luckperms
  username: u1_AbCdEfGhIj
  password: '<PASSWORT_AUS_DEM_PANEL>'
  • storage-method – der Speichertyp; MariaDB oder MySQL.
  • address – der Endpoint aus dem Panel (Adresse und Port).
  • database, username – die genauen Werte aus dem Panel (in diesem Beispiel ausgedacht).
  • password – das Passwort aus dem Panel, wegen Sonderzeichen in einfachen Anführungszeichen.

Plugins, die eine einzelne Zeichenkette (JDBC-URL) möchten, erhalten den Wert aus dem Feld JDBC Connection String in der Form jdbc:mysql://user:password@172.18.0.1:3306/database. Mehr zu Datenbanken für Minecraft-Plugins: MySQL für Plugins.

Überprüfung#

Prüfen Sie vom VPS aus, dass sich der Benutzer des Servers über die Adresse verbinden kann, die die Container verwenden:

bash
mariadb -h 172.18.0.1 -u <DB_BENUTZER> -p <DB_NAME> -e "SELECT 1;"
  • -h 172.18.0.1 – verbindet sich über TCP mit der Docker-Schnittstelle.
  • -u <DB_BENUTZER> – der Benutzer aus dem Panel (zum Beispiel u1_AbCdEfGhIj).
  • -p – fragt nach dem Passwort.
  • <DB_NAME> – die Datenbank aus dem Panel (zum Beispiel s1_luckperms).
  • -e "SELECT 1;" – führt eine einfache Abfrage aus und beendet sich.

Sie sehen eine Tabelle mit der Zahl 1. Haben Sie bei Connections From 172.18.0.% eingetragen, besteht dieser Test vom VPS aus, weil eine Verbindung zu 172.18.0.1 die Quelladresse 172.18.0.1 hat.

Starten Sie zum Schluss den Gameserver neu und prüfen Sie in seiner Konsole, dass sich das Plugin ohne Fehler mit der Datenbank verbunden hat.

Für Fortgeschrittene: die Datenbank auf einem anderen Server#

Läuft MariaDB auf einem anderen VPS als Panel und Wings:

  • Legen Sie das Panel-Konto mit der IP-Adresse des VPS mit dem Panel an ('pterodactyluser'@'203.0.113.10').
  • Tragen Sie im Feld Host die IP-Adresse des Datenbankservers ein. Sowohl das Panel als auch die Container auf den Nodes müssen ihn erreichen können.
  • Erlauben Sie in der Firewall des Datenbankservers Port 3306 nur von den IP-Adressen des Panels und der Nodes (eine Regel mit ausgefülltem Quell-IP / Bereich).
  • Setzen Sie Connections From für die Datenbankbenutzer der Server auf die IP-Adresse der Node.

Fehlerbehebung#

Das Panel meldet beim Anlegen des Hosts Access denied for user 'pterodactyluser'@'172.18.0.1'#

Das Passwort ist falsch, oder der Benutzer hat nicht den Host 172.18.0.1. Prüfen Sie die Konten:

SQL
SELECT User, Host FROM mysql.user WHERE User = 'pterodactyluser';

Ist der Host ein anderer, löschen Sie das Konto (DROP USER 'pterodactyluser'@'<ALTER_HOST>';) und legen Sie es wie unter Ein Konto für das Panel beschrieben erneut an.

Connection refused oder Can't connect to … server on '172.18.0.1'#

MariaDB lauscht nicht auf dieser Adresse. Prüfen Sie ss -tlnp | grep 3306 (es muss 0.0.0.0:3306 zeigen) und die Datei 60-pterodactyl.cnf. Starten Sie MariaDB nach jeder Änderung neu.

Das Plugin konnte die Datenbank nicht erreichen. Meist steht in der Plugin-Konfiguration localhost oder 127.0.0.1 statt 172.18.0.1, oder UFW blockiert die Verbindung aus dem Container (siehe Firewall).

Das Plugin meldet Access denied for user 'u1_…'@'172.18.0.x'#

Connections From enthält eine Adresse, von der sich der Container nicht verbindet. Löschen Sie die Datenbank und legen Sie sie mit 172.18.0.% erneut an, oder erzeugen Sie im Panel ein neues Passwort für die Datenbank, falls Sie es falsch eingegeben haben.

Der Benutzer sieht die Schaltfläche New Database nicht#

Der Server hat ein Database Limit von 0, oder das Limit ist ausgeschöpft. Ändern Sie es wie unter Das Datenbanklimit des Servers beschrieben.

Zusammenfassung

  • Gameserver-Container sehen den VPS unter 172.18.0.1, nicht unter 127.0.0.1.
  • Das Panel-Konto hat WITH GRANT OPTION und darf sich nur von 172.18.0.1 anmelden.
  • MariaDB lauscht dank der Datei 60-pterodactyl.cnf auf 0.0.0.0; Port 3306 ist durch die Firewall für das Internet geschlossen.
  • Der Database Host im Panel hat die Adresse 172.18.0.1, die Benutzer als Endpoint sehen.
  • Setzen Sie für Server ein Database Limit, sonst können Benutzer keine Datenbanken anlegen.

War diese Anleitung hilfreich?

Gilt für

  • Ubuntu 24.04
  • Debian 13
  • Pterodactyl Panel 1.x

Dienste

Fehler in der Anleitung melden

Anleitungen durchsuchen