Apps ·
PostgreSQL-Datenbank erstellen und verbinden
Bestelle eine verwaltete PostgreSQL-Datenbank im Panel, finde Host, Port, Benutzer und Passwort und verbinde dich mit psql oder einem Verbindungs-String. Mit TLS und Backups.
Eine verwaltete PostgreSQL-Datenbank gibt dir einen Ort für deine Daten, ohne dass du einen Server pflegen musst. Du bestellst sie im Panel, kopierst die Verbindungsdaten und verbindest dich von deinem Rechner oder aus deiner Anwendung. Diese Anleitung zeigt jeden Schritt.
Was du brauchst
- Ein Headpat Space-Konto mit bestätigter E-Mail-Adresse und hinterlegten Rechnungsdaten.
- Einen PostgreSQL-Client. Diese Anleitung nutzt
psql, das bei PostgreSQL dabei ist.
1. Datenbank bestellen
- Melde dich im Panel an, öffne Apps in der Seitenleiste und klicke auf App erstellen.
- Suche unter Vorlage nach PostgreSQL und wähle es aus.
- Wähle unter Paket ein Paket. Ein einzelner Knoten reicht für ein Nebenprojekt oder einen Test. Die hochverfügbaren Pakete betreiben einen Primärknoten mit Repliken und schalten automatisch um, wenn der Primärknoten ausfällt.
- Trage unter Details einen Anzeigename ein. Wähle unter Version die PostgreSQL-Version, die deine Anwendung braucht, oder lass sie auf Neueste (empfohlen).
- Setze das Häkchen, mit dem du bestätigst, dass die Bereitstellung sofort beginnen darf, klicke auf App bereitstellen und schließe die Zahlung ab.
Die Datenbank wird automatisch erstellt. Warte, bis die App-Seite sie als laufend anzeigt.
2. Verbindungsdaten finden
Öffne die Datenbank unter Apps. Die Karte Datenbank-Verbindung enthält alles, was du brauchst.
| Feld | Was es ist |
|---|---|
| Host | Der Hostname deiner Datenbank |
| Port | Der Port deiner Datenbank. Es ist ein eigener Port, nicht der übliche 5432 |
| Typ | Der Datenbanktyp, hier postgres |
Der Login ist zunächst verborgen. Klicke neben Zugangsdaten auf Anzeigen, um Folgendes zu sehen:
- Benutzername: der Datenbankbenutzer,
app - Passwort: ein zufälliges Passwort, das für deine Datenbank erzeugt wurde
- Datenbank: der Name der Datenbank,
app - Verbindungs-String: alles zusammen in einer Zeile, fertig zum Einfügen
Jedes Feld hat eine Kopierschaltfläche. Klicke auf Verbergen, wenn du fertig bist. Behandle das Passwort wie jedes andere Geheimnis: Es gehört nicht in ein öffentliches Repository, einen Screenshot oder einen Chat.
3. Mit psql verbinden
Kopiere den Verbindungs-String, hänge ?sslmode=require ans Ende und füge ihn zwischen Anführungszeichen ein:
psql "postgres://app:DEIN_PASSWORT@DEIN_HOST:DEIN_PORT/app?sslmode=require"
Oder gib die Teile einzeln an. psql fragt dann nach dem Passwort:
psql -h DEIN_HOST -p DEIN_PORT -U app -d app
Du bist verbunden, wenn du die Eingabeaufforderung app=> siehst.
Mit \q verlässt du psql.
4. Aus deiner Anwendung verbinden
Die meisten Frameworks und Bibliotheken lesen einen einzigen Verbindungs-String, meist aus einer Umgebungsvariable namens DATABASE_URL:
DATABASE_URL=postgres://app:DEIN_PASSWORT@DEIN_HOST:DEIN_PORT/app?sslmode=require
Ein minimales Beispiel in Python mit dem Paket psycopg:
import os
import psycopg
with psycopg.connect(os.environ["DATABASE_URL"]) as conn:
print(conn.execute("SELECT now()").fetchone())
Bewahre das Passwort in einer Umgebungsvariable oder einem Secret-Speicher auf, nicht im Code.
Ein Hinweis zu TLS
Deine Datenbank ist über den im Panel angezeigten Host und Port aus dem Internet erreichbar. Verschlüsselung ist also wichtig.
- Der Datenbankserver unterstützt TLS.
psqlund die meisten aktuellen Clients nutzen es automatisch, wenn der Server es anbietet. - Der Verbindungs-String im Panel enthält keine Einstellung
sslmode. Hänge?sslmode=requireans Ende, wie in den Beispielen oben. Der Client verbindet sich dann nicht ohne Verschlüsselung. - Das Serverzertifikat stammt nicht von einer öffentlichen Zertifizierungsstelle. Die Modi
verify-caundverify-fullschlagen daher fehl. Nutzerequire. - Nicht jede Bibliothek liest
sslmodeso wiepsql. Meldet deine mitrequireeinen Zertifikatsfehler, suche nach ihrer Option, die verschlüsselt, ohne das Zertifikat zu prüfen. Bei node-postgres ist dassslmode=no-verify.
Einschränken, wer sich verbinden darf
Standardmäßig nimmt die Datenbank Verbindungen von jeder IP-Adresse an, die das Passwort kennt. Das kannst du eingrenzen.
- Suche auf der App-Seite die Karte IP-Zulassungsliste. Sie zeigt Für alle offen, solange die Liste leer ist.
- Trage eine IP-Adresse oder einen CIDR-Bereich ein, zum Beispiel
203.0.113.4oder203.0.113.0/24, und füge ihn hinzu. - Klicke auf Speichern. Die Karte zeigt jetzt Eingeschränkt.
Ab dann können sich nur noch die eingetragenen Adressen verbinden. Läuft deine Anwendung auf einem Server mit fester IP-Adresse, trage diese Adresse ein. Alle zulassen leert die Liste wieder, nachdem du gespeichert hast.
Backups
Das Panel sichert deine Datenbank automatisch nach Zeitplan. Wie oft und wie lange Sicherungen aufbewahrt werden, hängt von deinem Paket ab.
- Die Karte Sicherungen listet alle Sicherungen auf, markiert als Geplant oder Manuell.
- Klicke vor einer riskanten Änderung, etwa einer großen Migration, auf Sicherung erstellen.
- Wiederherstellen überschreibt die aktuellen Daten mit der Sicherung. Die Datenbank ist offline, bis die Wiederherstellung fertig ist. Das kann 10 Minuten oder länger dauern.
Mehr dazu in App sichern und wiederherstellen.
Du möchtest auch eine Kopie auf deinem Rechner? Nutze pg_dump:
pg_dump "postgres://app:DEIN_PASSWORT@DEIN_HOST:DEIN_PORT/app?sslmode=require" > backup.sql
Wenn etwas nicht funktioniert
- Zeitüberschreitung oder sofortiger Abbruch beim Verbinden: Prüfe Host und Port und ob deine IP-Adresse auf der IP-Zulassungsliste steht.
- Passwort-Authentifizierung fehlgeschlagen: Kopiere das Passwort noch einmal mit der Kopierschaltfläche. Leerzeichen am Rand sind eine häufige Ursache.