# MySQL-, MariaDB- und PostgreSQL-Datenbanken anlegen

> Lege Datenbanken und Benutzer auf deinem Server an, steuere den Zugriff pro Benutzer, rufe vorhandene Datenbanken ab und verbinde dich sicher per SSH-Tunnel.

Auf der Seite **Datenbanken** eines Servers verwaltest du die Datenbanken und Datenbankbenutzer darauf. Du legst eine Datenbank an, erstellst einen Benutzer mit Passwort und legst genau fest, auf welche Datenbanken dieser Benutzer zugreifen darf. Vimonto Deploy führt das SQL für dich auf dem Server aus. Für die tägliche Arbeit musst du dich also nie selbst bei MySQL, MariaDB oder PostgreSQL anmelden.

Die Seite gibt es auf Servern mit einer Datenbank-Engine: App-Servern und Datenbankservern (siehe [Servertypen](https://ops.vimonto.com/docs/de/servers/server-types)).

![Die Seite Datenbanken mit einer Liste von Datenbanken, ihren Benutzern und den Verbindungsdaten](https://ops.vimonto.com/docs-media/de/server-databases.webp?v=161e760d "Datenbanken und Benutzer auf einem Server")

## Welche Datenbank-Engines werden unterstützt?

Die Engine wählst du, wenn du [den Server erstellst](https://ops.vimonto.com/docs/de/servers/create-a-server). Auf einem Server läuft genau eine Engine.

| Engine | Versionen | Port |
| --- | --- | --- |
| MySQL | 8.4 LTS, 8.0 | 3306 |
| MariaDB | 11.4 LTS, 10.11 LTS | 3306 |
| PostgreSQL | 18, 17, 16 | 5432 |

MySQL- und MariaDB-Datenbanken werden mit dem Zeichensatz `utf8mb4` und der Sortierung `utf8mb4_unicode_ci` angelegt. Alle Engines laufen in UTC.

## Womit startet ein neuer Server?

Bei der Provisionierung entstehen eine Datenbank und ein Datenbankbenutzer, beide benannt nach dem Systembenutzer des Servers (standardmäßig `vimonto`). Dieser Benutzer hat Zugriff auf alle Datenbanken des Servers. Sein Passwort ist das **Datenbankpasswort**, das nach der Provisionierung einmalig bei den Passwörtern des Servers angezeigt wird. Speichere es in deinem Passwortmanager, denn Vimonto Deploy löscht es, sobald du bestätigst.

In der Liste **Benutzer** ist dieser Benutzer als **Systembenutzer** markiert und zeigt **Alle Datenbanken**. Diesen Zugriff behält er: Du kannst ihn nicht auf einzelne Datenbanken beschränken und nicht entfernen, denn Sites ohne eigenen Datenbankbenutzer verbinden sich mit ihm. Klicke daneben auf **Passwort ändern**, um ihm ein neues Passwort zu geben; Vimonto Deploy ändert dann nur das Passwort und lässt seine Rechte, wie sie sind. Passe `DB_PASSWORD` in der [Umgebung](https://ops.vimonto.com/docs/de/sites/environment) jeder Site an, die sich als dieser Benutzer verbindet. Solange die Passwörter des Servers noch auf deine Bestätigung warten, ersetzt das neue Passwort auch das dort angezeigte **Datenbankpasswort**.

## Eine Datenbank anlegen

1. Öffne den Server und wähle in der Seitenleiste **Datenbanken**.
2. Klicke auf **Neue Datenbank**.
3. Gib unter **Name** einen Namen ein, etwa `shop_production`. Verwende Buchstaben, Ziffern und Unterstriche, höchstens 63 Zeichen.
4. Klicke auf **Anlegen**.

Die Datenbank steht auf **Wird hinzugefügt**, bis sie auf dem Server existiert. Schlägt das Anlegen fehl, klicke auf **Erneut versuchen**.

> [!TIP]
> Wenn du [eine Site erstellst](https://ops.vimonto.com/docs/de/sites/create-a-site), kannst du im selben Schritt ihre Datenbank und einen eigenen Benutzer anlegen. Die neue Datenbank und der Benutzer erscheinen dann auch hier.

## Einen Datenbankbenutzer hinzufügen

1. Klicke im Abschnitt **Benutzer** auf **Neuer Benutzer**.
2. Gib unter **Name** einen Namen ein (Buchstaben, Ziffern und Unterstriche, höchstens 32 Zeichen).
3. Gib ein **Passwort** mit mindestens 12 Zeichen ein oder klicke auf **Generieren** für ein zufälliges Passwort mit 24 Zeichen.
4. Hake unter **Zugriff auf** die Datenbanken an, die der Benutzer verwenden darf.
5. Klicke auf **Anlegen**.

Vimonto Deploy speichert keine Datenbankpasswörter. Das Passwort geht einmal in einem verschlüsselten Job an den Server und wird danach vergessen. Notiere es selbst, zum Beispiel in der [Umgebung](https://ops.vimonto.com/docs/de/sites/environment) deiner Site.

### Was darf ein Datenbankbenutzer?

Ein Benutzer erhält alle Rechte auf die angehakten Datenbanken und keinerlei Rechte auf andere Datenbanken. Die Liste unter jedem Benutzer zeigt seine Datenbanken oder **Kein Zugriff**, wenn keine angehakt ist.

- Unter MySQL und MariaDB wird der Benutzer sowohl für lokale Verbindungen als auch für Verbindungen von anderen Hosts angelegt, jeweils mit denselben Rechten.
- Unter PostgreSQL erhält der Benutzer alle Rechte auf jede Datenbank und auf deren Schema `public`.

### Zugriff oder Passwort eines Benutzers ändern

Klicke neben einem Benutzer auf **Bearbeiten**. Ändere die angehakten Datenbanken unter **Zugriff auf** oder gib ein neues **Passwort** ein. Lässt du das Passwort leer, bleibt das aktuelle bestehen. Klicke auf **Speichern**: Vimonto Deploy entzieht dem Benutzer die alten Rechte und gewährt genau die jetzt angehakten Datenbanken. Die Ausnahme ist der Systembenutzer: Er erhält nur ein neues Passwort, wie oben beschrieben.

## Auf dem Server angelegte Datenbanken abrufen

Datenbanken, die außerhalb von Vimonto Deploy entstanden sind, etwa durch eine Migration, eine Wiederherstellung oder von Hand im [Terminal](https://ops.vimonto.com/docs/de/servers/terminal), erscheinen nicht automatisch. Klicke auf **Vom Server abrufen**, um sie in die Liste aufzunehmen. Vimonto Deploy liest die Datenbanken auf dem Server, überspringt die Systemdatenbanken der Engine und fügt jede neue hinzu. Danach kannst du Benutzern Zugriff darauf geben und sie in [Backups](https://ops.vimonto.com/docs/de/servers/backups) aufnehmen.

Übernommen werden nur Datenbanken, deren Namen aus Buchstaben, Ziffern und Unterstrichen bestehen. Außerhalb von Vimonto Deploy angelegte Benutzer werden nicht abgerufen.

## Mit einer Datenbank verbinden

Der Abschnitt **Verbinden** zeigt die Daten für deine Datenbank-Clients und Anwendungen:

| Feld | Bedeutung |
| --- | --- |
| **Host** | Die private IP-Adresse des Servers, falls vorhanden, sonst seine öffentliche IP-Adresse. |
| **Port** | 3306 für MySQL und MariaDB, 5432 für PostgreSQL. |
| **SSH-Tunnel** | Ein fertiger Befehl, um die Datenbank von deinem eigenen Computer aus zu erreichen. |
| **Verbindungs-URL** | Das zu verwendende URL-Format, ausgefüllt mit Benutzer, Passwort und Datenbank. |

### Von einer Site auf demselben Server

Eine Site auf demselben Server verbindet sich mit `127.0.0.1` auf dem Port der Engine, mit einem Datenbankbenutzer und dessen Passwort. Trage diese Werte in die [Umgebung](https://ops.vimonto.com/docs/de/sites/environment) der Site ein, bei einer Laravel-Anwendung `DB_HOST`, `DB_PORT`, `DB_DATABASE`, `DB_USERNAME` und `DB_PASSWORD`.

### Von deinem eigenen Computer über einen SSH-Tunnel

Der Datenbankport ist nicht aus dem Internet erreichbar. Um einen Desktop-Client wie TablePlus, DBeaver oder MySQL Workbench zu nutzen, öffne einen SSH-Tunnel mit dem Systembenutzer und einem [SSH-Schlüssel](https://ops.vimonto.com/docs/de/connections/ssh-keys), der auf dem Server hinterlegt ist:

```bash
ssh -L 3306:127.0.0.1:3306 vimonto@203.0.113.10
```

Solange der Tunnel offen ist, verbindest du deinen Client mit `127.0.0.1` auf Port 3306 (5432 für PostgreSQL), mit einem Datenbankbenutzer und dessen Passwort. Die meisten Datenbank-Clients können den SSH-Tunnel auch selbst öffnen: Gib dazu in den SSH-Einstellungen des Clients die IP-Adresse des Servers, den Benutzer `vimonto` und deinen privaten Schlüssel ein.

### Von anderen Servern

Auf einem dedizierten Datenbankserver lauscht die Engine auf allen Netzwerkschnittstellen, sodass Web- und Worker-Server sich verbinden können. Liegt der Datenbankserver in einem [privaten Netzwerk](https://ops.vimonto.com/docs/de/servers/server-types#server-in-einem-privaten-netzwerk), erlaubt die Provisionierung Port 3306 (oder 5432) bereits aus dem Adressbereich dieses Netzwerks: Verbinde deine anderen Server im Netzwerk mit der privaten IP-Adresse des Datenbankservers, ohne eigene Regel. Um dich von anderswo zu verbinden, etwa von einem Server außerhalb des Netzwerks oder einer festen öffentlichen IP-Adresse, füge selbst auf der Seite [Netzwerk](https://ops.vimonto.com/docs/de/servers/network) eine Regel für diesen Port von dieser Adresse hinzu. Ein Datenbankserver ohne privates Netzwerk nimmt keine Verbindungen von anderen Servern an, bis du eine solche Regel hinzufügst.

Auf einem App-Server lauschen MySQL und MariaDB nur auf dem Server selbst und PostgreSQL nur auf `localhost`. Um diese von anderswo zu erreichen, nutze einen SSH-Tunnel.

> [!WARNING]
> Gib den Datenbankport niemals für alle frei. Beschränke Firewall-Regeln auf die Adressen deiner eigenen Server.

## Eine Datenbank oder einen Benutzer löschen

Klicke neben einer Datenbank auf **Entfernen**, gib zur Bestätigung ihren Namen ein und klicke auf **Datenbank löschen**. Die Datenbank und alle Daten darin werden endgültig gelöscht.

Klicke neben einem Benutzer auf **Entfernen** und bestätige mit **Benutzer entfernen**. Anwendungen, die sich mit diesem Benutzer verbinden, erreichen ihre Datenbank danach nicht mehr. Unter PostgreSQL werden Objekte, die dem Benutzer gehören, mit ihm gelöscht.

> [!WARNING]
> Das Löschen einer Datenbank lässt sich nicht rückgängig machen. Erstelle vorher ein [Backup](https://ops.vimonto.com/docs/de/servers/backups), wenn du die Daten noch brauchen könntest.

## Häufig gestellte Fragen

### Wo finde ich das Datenbankpasswort?

Vimonto Deploy speichert keine Passwörter der Datenbankbenutzer, die du anlegst. Du wählst oder generierst sie selbst. Hast du eines verloren, klicke neben dem Benutzer auf **Bearbeiten**, setze ein neues Passwort und aktualisiere danach die Anwendungen, die es verwenden. Das Passwort des Systembenutzers wird nach der Provisionierung einmalig angezeigt.

### Kann ein Datenbankbenutzer auf mehr als eine Datenbank zugreifen?

Ja. Hake unter **Zugriff auf** jede Datenbank an, die der Benutzer braucht. Ein Benutzer ohne angehakte Datenbanken kann sich anmelden, aber keine Datenbank verwenden.

### Warum kann sich mein anderer Server nicht mit der Datenbank verbinden?

Prüfe drei Dinge: Die Datenbank läuft auf einem dedizierten Datenbankserver (ein App-Server nimmt nur lokale Verbindungen an), die Firewall des Datenbankservers erlaubt den Port vom anderen Server (in einem privaten Netzwerk automatisch, für andere Adressen mit einer eigenen Regel), und du verbindest dich mit der privaten IP-Adresse, wenn beide Server im selben privaten Netzwerk sind.

### Unterstützt Vimonto Deploy hier auch Redis oder MongoDB?

Nein. Diese Seite verwaltet MySQL, MariaDB und PostgreSQL. Redis wird auf App-Servern und Cache-Servern als Dienst installiert; siehe [Dienste](https://ops.vimonto.com/docs/de/servers/services).
