Skip to content

Datenbanken

Jede Website kann eigene Datenbanken haben, angelegt im Tab Datenbanken. Die Engine ist MariaDB, also MySQL-kompatibel; PostgreSQL gibt es nicht, und zu wählen gibt es nichts.

Datenbanken sind nur von deiner eigenen Website aus erreichbar. Von außen kommt nichts durch, auch dein Arbeitsrechner nicht. Es gibt daher kein Verwaltungstool von außen und kein phpMyAdmin.

Anlegen

Du vergibst einen kurzen Namen, und der ist streng:

text
Beginnt mit einem Kleinbuchstaben, danach nur Kleinbuchstaben und Zahlen (max. 16 Zeichen)

Kleinbuchstaben und Ziffern, sonst nichts. wordpress und shop2 gehen, wp_main und my-db nicht.

Dieser Name ist ein Etikett, nicht der echte Datenbankname. Die tatsächlichen Datenbank- und Benutzernamen werden aus deiner Website und dem Etikett erzeugt und sind beide länger. Kopier immer die Werte, die das Portal anzeigt, statt sie zu raten.

Eine neue Datenbank zeigt ein paar Sekunden Wird erstellt... und dann Bereit. Zeichensatz und Kollation liegen fest auf utf8mb4 und utf8mb4_unicode_ci.

Wie viele Datenbanken eine Website haben darf, ist nicht begrenzt. Ihre Größe zählt wie alle anderen Daten gegen den Speicher-Pool des Pakets.

Verbinden

Nutz aus deinem eigenen Code die Umgebung. Jede Website hat ihre Datenbank-Zugangsdaten in der Umgebung, es muss also nichts in eine Datei geschrieben werden, die im Repository landet:

VariableInhalt
DB_HOST, DB_PORTHost und Port der ersten Datenbank
DB_NAME, DB_USER, DB_PASSWORDDeren Datenbankname, Benutzer und Passwort
DB_<ETIKETT>_HOST und so weiterDieselben fünf je Datenbank, nach Etikett

DB_HOST und die anderen zeigen auf die erste Datenbank der Website. Bei mehreren nimmst du die Form mit Etikett, also zum Beispiel DB_SHOP_NAME.

Für Anwendungen, die sie in einer Konfigurationsdatei wollen, klappst du die Zeile der Datenbank auf, liest mit Zugangsdaten anzeigen Host, Port, Datenbank, Benutzername und Passwort, oder holst dir über Config-Snippet die fertige Form für .env, WordPress, Laravel oder einfaches PHP.

In der Konsole gibt es keinen mysql-Befehl

Die Kommandozeilen-Clients sind nicht installiert, mysql, mysqldump und alles, was sie aufruft, scheitert also. Dazu gehören wp db export, wp db import und wp db cli.

Für einen Dump erstellst du ein Backup und lädst die SQL-Datei herunter. Für Abfragen nimmst du die Werkzeuge deines Frameworks, etwa php artisan tinker oder wp eval, die über PHP mit der Datenbank sprechen.

Verbindungslimits

Jeder Datenbankbenutzer darf 50 Verbindungen gleichzeitig halten. Eine Website bedient höchstens 15 PHP-Anfragen parallel, normaler Verkehr kommt dem also nicht nahe, auch mit persistenten Verbindungen nicht. Konsolen- und Cron-Läufe kommen mit ein bis zwei Verbindungen obendrauf.

Wenn du doch anschlägst, meldet der Treiber MariaDBs eigene Nachricht. Die realistische Ursache ist eine Anwendung, die Verbindungen in einer Schleife öffnet und nicht schließt, nicht ein zu niedriges Limit.

Passwort rotieren

Passwort rotieren an der Zeile der Datenbank ersetzt das Passwort. Das Portal fragt vorher:

text
Bist du sicher? Das aktuelle Passwort wird ungültig und deine Anwendung muss aktualisiert werden.

Nimm das wörtlich:

  • Das alte Passwort funktioniert sofort nicht mehr.
  • Das neue Passwort wird von der Rotation nicht angezeigt. Warte ein paar Sekunden und lies es über Zugangsdaten anzeigen.
  • Der Datenbankbenutzer ist kurz weg, während er neu angelegt wird. Verbindungen scheitern also einen Moment lang auch mit dem richtigen Passwort.
  • Alles, was die Zugangsdaten in einer Datei hält, wp-config.php, .env, eine Framework-Konfiguration, behält das alte Passwort und bleibt kaputt, bis du es aktualisierst.

Anwendungen, die DB_PASSWORD aus der Umgebung lesen, übernehmen den neuen Wert beim nächsten Neustart der Website.

Löschen

Eine Datenbank im Tab zu löschen zerstört sie:

text
Bist du sicher? Die Datenbank und alle Daten werden unwiderruflich gelöscht.

Es gibt kein weiches Löschen, keine Schonfrist und kein Backup vorher. Falls du die Daten noch brauchen könntest, erstell ein Backup und lad die SQL-Datei herunter, bevor du löschst. Dasselbe gilt für das Löschen der ganzen Website.

Weiter