Software

Was ist PostgreSQL? Ubuntu Installation und MySQL Unterschiede

Talha Aslan 19 Minuten Lesezeit 2 Aufrufe

Was ist PostgreSQL?

PostgreSQL ist ein quelloffenes relationales Datenbanksystem, das Daten in Tabellen speichert und Abfragen in SQL beantwortet. Der Datentyp JSONB, das Erweiterungssystem und die hohe Nähe zum SQL Standard machen es zur gängigen Wahl für kleine Webprojekte und für komplexe Anwendungen.

Dieser Leitfaden richtet sich an zwei Leser. Der erste betreibt eine Website, einen Shop oder ein Softwareprojekt und muss eine Datenbankentscheidung treffen. Der zweite verwaltet einen VPS und möchte Befehle Schritt für Schritt nachvollziehen.

Wir sind ein Team für digitales Marketing und Web, kein Hostinganbieter. Deshalb stützt sich alles hier auf die offizielle Dokumentation von PostgreSQL und Ubuntu. Statt einer Versionsnummer schreiben wir "aktuelle stabile Version", denn Zahlen veralten schnell.

Gegen Ende finden Sie außerdem einen ehrlichen Abschnitt. Er erklärt, welche Schritte Sie nicht selbst gehen sollten und welche Ihr Hostinganbieter übernehmen sollte. Ein Fehler an der Datenbank kann Ihre gesamte Website lahmlegen.

Was ist PostgreSQL, und was leistet eine relationale Datenbank?

Eine relationale Datenbank hält Informationen in Tabellen aus Zeilen und Spalten. In einem Shop liegen zum Beispiel Kunden, Produkte und Bestellungen in getrennten Tabellen. Schlüssel verbinden die Tabellen, sodass eine Abfrage zeigt, welcher Kunde welche Bestellung aufgegeben hat.

PostgreSQL erledigt diese Arbeit als Serverprogramm. Ihre Anwendung, also Ihre Website oder API, spricht über das Netzwerk oder einen lokalen Socket mit ihm. Dann schickt die Anwendung eine Abfrage und erhält das Ergebnis. Der Datenbankprozess läuft für sich und legt die Daten in eigener Struktur auf der Festplatte ab.

Kurz gesagt: Was ist PostgreSQL? Es ist das Gedächtnis Ihrer Website. Denn Produktlisten, Benutzerkonten, Warenkörbe und Bestellverläufe liegen dort. Wird die Datenbank langsam, dann laden auch Ihre Seiten langsam. Antwortet sie dagegen gar nicht mehr, zeigt Ihre Website Fehler.

Mit der Datenbank sprechen Sie in SQL. Daher beginnen Sie, wenn SQL für Sie neu ist, mit unserem Fahrplan zum SQL Lernen. Zum Beispiel für Abfrageszenarien im Stil von Vorstellungsgesprächen lesen Sie die SQL Interview Fragen.

Welche Stärken hat PostgreSQL?

Einige Eigenschaften heben PostgreSQL ab, und Sie können jede davon in der offiziellen Dokumentation prüfen. Außerdem kommen die meisten ohne zusätzliche Lizenzgebühr.

  • Hohe Nähe zum SQL Standard: Laut Dokumentation erfüllt es mindestens 170 der 177 Pflichtfunktionen für die Core Konformität von SQL:2023.
  • Der Datentyp JSONB: Er speichert JSON Dokumente binär und lässt Sie diese indizieren.
  • Erweiterbarkeit: Erweiterungen, eigene Funktionen und mehrere Prozedursprachen ergänzen neue Fähigkeiten.
  • Foreign Data Wrapper: Sie fragen andere Datenquellen ab, als wären es Tabellen.
  • Eine verlässliche Release Politik: Jede Hauptversion erhält etwa fünf Jahre Unterstützung.

Behalten Sie beim Lesen einen Punkt im Kopf. Denn eine Stärke bedeutet nicht automatisch einen Vorteil für Ihr Projekt. Eine einfache Firmenwebsite braucht zum Beispiel die meisten dieser Funktionen nie. Wächst das Projekt allerdings, zahlt sich die Flexibilität aus.

Die offizielle Seite nennt einen wichtigen Vorbehalt, denn kein aktuelles Datenbanksystem behauptet volle Konformität mit Core SQL:2023. Deshalb ist "hohe Konformität" die ehrliche Formulierung, nicht "vollständige". Quelle: die PostgreSQL Seite zur SQL Konformität.

Was ist JSONB, und worin unterscheidet es sich von JSON?

PostgreSQL bietet zwei JSON Typen, json und jsonb. Der Typ json speichert Ihren Eingabetext genau so, wie Sie ihn getippt haben. Der Typ jsonb zerlegt das Dokument dagegen und speichert es binär. Deshalb ist jsonb bei Abfragen schneller, beim Schreiben aber etwas langsamer.

Merkmaljsonjsonb
SpeicherungExakte Kopie des EingabetextesZerlegtes Binärformat
Leerzeichen und SchlüsselreihenfolgeBleiben erhaltenGehen verloren
Doppelte SchlüsselAlle bleibenNur der letzte Wert bleibt
IndexunterstützungKeineGIN Index
AbfragegeschwindigkeitLiest bei jedem Lauf neuKein erneutes Einlesen nötig

Die Dokumentation ist hier eindeutig. Speichern Sie also JSON Daten als jsonb, sofern Sie keinen sehr speziellen Bedarf haben. Alte Annahmen über die Reihenfolge von Objektschlüsseln sind allerdings die Hauptausnahme.

Das folgende Beispiel legt einen GIN Index auf einer jsonb Spalte an und fragt sie dann mit dem Enthaltensein Operator ab. Tabellen und Spaltennamen sind Beispiele.

CREATE TABLE bestellungen (id serial PRIMARY KEY, details jsonb);
CREATE INDEX bestellungen_details_gin ON bestellungen USING GIN (details);
SELECT details->>'kunde' FROM bestellungen WHERE details @> '{"zahlung": "karte"}';

Hier liefert der Operator ->> einen Wert als Text. Danach prüft der Operator @>, ob das Dokument das angegebene Fragment enthält. Quelle: die PostgreSQL Dokumentation zu JSON Typen.

Was bedeutet Erweiterbarkeit bei PostgreSQL?

Denken Sie an PostgreSQL als Plattform, nicht als einzelnes Produkt. Der Kern bleibt schlank, daher fügen Sie Fähigkeiten über Erweiterungen hinzu. Eine Erweiterung laden Sie zum Beispiel mit dem Befehl CREATE EXTENSION in eine Datenbank. Die offizielle Funktionsmatrix führt vertrauenswürdige Erweiterungen sogar als eigenes Thema.

Funktionen, Trigger und gespeicherte Prozeduren gehören außerdem zur selben Flexibilität. Mit Prozedursprachen wie PL/pgSQL, PL/Perl und PL/Python schreiben Sie Logik direkt in der Datenbank. Allerdings ist es selten klug, die gesamte Logik dorthin zu legen. Ziehen Sie bewusst eine Grenze zwischen Anwendungscode und Datenbankcode.

Foreign Data Wrapper bringen zudem eine weitere Stärke. Sie lesen zum Beispiel eine Tabelle eines anderen PostgreSQL Servers direkt aus Ihrer eigenen Abfrage. Das hilft außerdem bei Datenmigration und Berichten.

Was bedeutet das für Marketing und Webprojekte? Der Nutzen ist indirekt, aber real. Wachsen Suche, Reporting und Datenerfassung, können Sie oft die Fähigkeiten der Datenbank nutzen, statt ein separates Werkzeug zu installieren. Das senkt den Wartungsaufwand.

Was ist PostgreSQL im Vergleich zu MySQL, und wie unterscheiden sich beide in der Praxis?

Beide sind quelloffene, weit verbreitete relationale Datenbanken, die SQL sprechen. Die meisten Unterschiede liegen daher im Detail und im Umfeld. Die Tabelle unten fasst die Unterschiede zusammen, die belegt oder unstrittig sind.

ThemaPostgreSQLMySQL
LizenzFreizügige PostgreSQL LizenzCommunity Edition unter der GPL, kommerzielle Option vorhanden
Standardport54323306
Kommandozeilenclientpsqlmysql
JSON IndizierungGIN Index direkt auf einer jsonb SpalteÜber eine generierte Spalte oder einen mehrwertigen Index
ZugriffskontrolleDatei pg_hba.conf plus RollenKonten an ein Paar aus Benutzer und Host gebunden
ErweiterungswegErweiterungen mit CREATE EXTENSIONPlugin und Storage Engine Architektur
WordPress KernUnterstützt es nichtUnterstützt es (zusammen mit MariaDB)

Die JSON Zeile stammt aus der offiziellen Dokumentation. Bei MySQL dagegen indizieren Sie eine JSON Spalte nicht direkt. Stattdessen indizieren Sie eine generierte Spalte, die einen Wert aus dem JSON Ausdruck zieht. InnoDB unterstützt außerdem mehrwertige Indizes für JSON Arrays. Quelle: die MySQL Dokumentation zu JSON.

Die MySQL Einrichtung und den MariaDB Vergleich behandeln wir in Schwesterartikeln, deshalb wiederholen wir diese Details hier nicht.

Welche Projekte passen zu PostgreSQL und welche zu MySQL?

Wenn Sie wissen, was ist PostgreSQL, bleibt die eigentliche Frage die Wahl. Eine feste Regel gibt es nicht, aber einen soliden Filter. Prüfen Sie zunächst, welche Software Ihr Projekt betreibt. Viele fertige Systeme wählen die Datenbank nämlich für Sie.

  • WordPress und seine Plugins: Nutzen Sie MySQL oder MariaDB, denn der Kern läuft auf keiner anderen Datenbank.
  • Anwendungen, die Sie mit Frameworks wie Laravel oder Django neu bauen: Beide Datenbanken funktionieren, die Wahl liegt bei Ihnen.
  • Projekte mit vielen JSON Daten, komplexem Reporting und fortgeschrittenen SQL Anforderungen: PostgreSQL ist ein starker Kandidat.
  • Einfache Seiten in einem Hostingtarif, der nur MySQL bietet: Kämpfen Sie nicht gegen den Tarif. Bleiben Sie bei MySQL.

Auch die Kenntnisse Ihres Teams zählen. Arbeitet Ihr Team seit Jahren mit MySQL und ist das Projekt einfach, kostet ein Wechsel mehr, als er bringt. Bauen Sie dagegen ein neues Softwareprodukt mit komplexem Datenmodell, ist PostgreSQL ein sinnvoller Start.

Es gibt außerdem eine Falle. Die Frage "Welche Datenbank ist am schnellsten?" ist die falsche Frage. Die Geschwindigkeit hängt nämlich von Schema, Indizes, Abfragen und Hardware ab. Gehen Sie daher vorsichtig mit auffälligen Benchmark Zahlen um.

Planen Sie eine individuelle Software oder ein Shop Backend, wählen wir in unserer individuellen Softwareentwicklung die Datenbank gemeinsam mit Ihnen nach Bedarf aus.

Was sollten Sie vor der Installation entscheiden?

Beantworten Sie drei Fragen, bevor Sie einen Befehl eingeben. Erstens: Haben Sie root oder sudo Zugriff auf den Server? Bei Shared Hosting können Sie PostgreSQL daher nicht selbst installieren. Manche Hostingpanels bieten allerdings eine fertige PostgreSQL Option, prüfen Sie daher die Leistungen Ihres Tarifs.

Die zweite Frage betrifft die Version. Ubuntu liefert in der eigenen Paketquelle eine feste PostgreSQL Version, und diese Version bleibt für die Laufzeit der Ubuntu Ausgabe unterstützt. Wollen Sie eine neuere, fügen Sie die eigene apt Paketquelle des PostgreSQL Projekts hinzu, bekannt als PGDG.

Die dritte Frage betrifft das Backup. Sie brauchen nämlich ein funktionierendes Backup, bevor Sie die Datenbank anfassen. Zum Beispiel zeigt unsere Website Backup Strategie, wie Sie eines planen.

Kennen Sie auch die Versionspolitik. Laut offizieller Seite erscheint etwa einmal im Jahr eine neue Hauptversion, und jede Hauptversion erhält fünf Jahre Unterstützung. Nebenversionen erscheinen dagegen mindestens alle drei Monate. Folglich ist eine Version ohne Support ein Sicherheitsrisiko. Quelle: die PostgreSQL Versionspolitik.

Wie installieren Sie PostgreSQL auf Ubuntu?

Der kürzeste Weg ist die eigene Paketquelle von Ubuntu. Die offizielle Downloadseite und die Ubuntu Server Dokumentation nennen denselben Befehl. Aktualisieren Sie zuerst die Paketliste, dann installieren Sie das Paket.

sudo apt update
sudo apt install postgresql

Prüfen Sie nach der Installation, ob der Dienst läuft. Zunächst zeigen die Befehle unten den Dienststatus und die Clientversion. Auf Debian basierten Systemen liefert das Paket postgresql-common außerdem das Werkzeug pg_lsclusters, das die Cluster auflistet.

sudo systemctl status postgresql
psql --version
pg_lsclusters

Zum Neustart des Dienstes nutzen Sie den Befehl aus der Ubuntu Dokumentation: sudo systemctl restart postgresql.service. Die Konfigurationsdateien liegen im Ordner /etc/postgresql/<version>/main/. Der Teil für die Version ist also die Nummer der Ausgabe, die Sie installiert haben.

Nach der Installation nimmt der Server keine Verbindungen von außen an, denn der Standardwert von listen_addresses ist localhost. Das ist ein sicherer Start. Wie Sie den Zugriff später öffnen, zeigt ein eigener Abschnitt.

Wie installieren Sie eine neuere Version aus der PGDG Paketquelle?

Reicht Ihnen die Version aus der Ubuntu Paketquelle, überspringen Sie diesen Abschnitt. Brauchen Sie eine neuere Hauptversion, können Sie die offizielle PostgreSQL apt Paketquelle hinzufügen. Die Downloadseite bietet dafür ein automatisches Skript.

sudo apt install -y postgresql-common
sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh

Das Skript fügt die Paketquelle und den Signaturschlüssel hinzu. Danach installieren Sie die gewünschte Version über den Paketnamen. Der Paketname folgt zudem dem Muster postgresql-<version>. Lesen Sie die aktuelle stabile Version auf der Downloadseite ab, denn wir nennen hier keine Nummer.

sudo apt update
sudo apt install postgresql-<version>

Beachten Sie, dass das Herunterladen und Ausführen eines Skripts als root eine Vertrauensentscheidung ist. Hier vertrauen Sie der offiziellen PostgreSQL Seite. Dehnen Sie dieses Vertrauen nicht auf ähnliche Befehle von anderen Adressen aus. Die manuellen Schritte stehen außerdem auf der Downloadseite.

Testen Sie eine neue Version zunächst auf einem Testrechner, bevor Sie sie auf einen Produktionsserver bringen. Ein Wechsel der Hauptversion braucht Dump und Wiederherstellung oder das Werkzeug pg_upgrade, weil das Datenverzeichnis zwischen Hauptversionen nicht kompatibel ist.

Wie verbinden Sie sich zum ersten Mal mit psql?

Die Installation legt einen Systembenutzer namens postgres und eine Datenbankrolle mit gleichem Namen an. Deshalb bauen Sie die erste Verbindung als dieser Benutzer auf. Konkret nennt die Ubuntu Dokumentation diesen Befehl.

sudo -u postgres psql

Die Eingabeaufforderung ändert sich, und Sie können psql Befehle eingeben. Befehle mit einem Backslash gehören zu psql und sind kein SQL. Für den Anfang reichen diese vier.

  • Der Befehl \l listet die Datenbanken auf.
  • Dann zeigt \du die Rollen, also die Benutzer.
  • Außerdem prüfen Sie mit \conninfo, mit welcher Datenbank und welchem Benutzer Sie verbunden sind.
  • Schließlich beendet \q das Programm psql.

Nutzen Sie die Rolle postgres nicht für Ihre Anwendung. Sie ist ein Superuser und darf daher alles. Stattdessen ist eine eigene Rolle mit begrenzten Rechten für Sicherheit und Fehlerkontrolle der richtige Weg.

Wie legen Sie Benutzer und Datenbank an?

Sie haben zwei Wege, SQL Befehle oder Shell Werkzeuge. Das Werkzeug createuser ist ein Shell Wrapper um den Befehl CREATE ROLE, und laut Dokumentation gibt es keinen wirksamen Unterschied. Wir empfehlen SQL in psql, denn so bleiben Sie an einem Ort.

CREATE ROLE app_user WITH LOGIN;
\password app_user
CREATE DATABASE app_db OWNER app_user;

Der Befehl \password fragt Sie nach dem Passwort und schickt es verschlüsselt an den Server. Denn ein Passwort in der Kommandozeile oder im SQL Text kann in der Shell Historie und in Logs landen. Nutzen Sie daher den interaktiven Befehl. Speichern Sie das Passwort außerdem in einem Passwortmanager.

Bevorzugen Sie die Shell, erledigen die zwei Befehle unten dieselbe Aufgabe. Bei createuser fragt das Flag -P nach einem Passwort, bei createdb legt das Flag -O den Eigentümer fest.

sudo -u postgres createuser -P app_user
sudo -u postgres createdb -O app_user app_db

Zum Testen der Verbindung führen Sie psql -h localhost -U app_user -d app_db aus. Fragt der Befehl nach einem Passwort, dann funktionieren Rolle und pg_hba.conf. Bei einem Fehler erklärt dann der nächste Abschnitt die wahrscheinliche Ursache.

Was ist pg_hba.conf, und wie funktioniert die Datei?

Die Datei pg_hba.conf steuert die Authentifizierung der Clients. Der Name steht nämlich für "host based authentication". Jede Zeile definiert eine Regel: wer sich verbinden darf, mit welcher Datenbank, von welcher Adresse und mit welcher Methode. Unter Ubuntu liegt die Datei also in /etc/postgresql/<version>/main/pg_hba.conf.

Eine Regel hat diese Felder: Verbindungstyp, Datenbank, Benutzer, Adresse und Methode. Zum Beispiel steht der Typ local für einen Unix Socket, der Typ host für eine TCP/IP Verbindung. Der Typ hostssl passt nur auf verschlüsselte TCP/IP Verbindungen.

FeldBedeutungBeispielwert
TYPEVerbindungstyplocal, host, hostssl
DATABASEZieldatenbankapp_db, all
USERVerbindende Rolleapp_user, all
ADDRESSClientadresse (CIDR)127.0.0.1/32
METHODAuthentifizierungsmethodescram-sha-256, peer, reject

Die wichtigste Regel lautet: PostgreSQL nutzt die erste Zeile, die zu Verbindungstyp, Adresse, Datenbank und Benutzer passt. Es geht also nie zu späteren Zeilen weiter. Scheitert die Anmeldung an der ersten passenden Zeile, probiert es die Zeilen darunter nicht aus. Passt dagegen keine Zeile, verweigert es den Zugriff.

Wie fügen Sie die richtige Zeile in pg_hba.conf ein?

Läuft Ihre Anwendung auf demselben Server und verbindet sich über TCP, genügt eine Passwortzeile für die lokale Adresse. Die Dokumentation zeigt dieses Format. Ersetzen Sie die Namen durch Ihre eigene Datenbank und Rolle.

host    app_db    app_user    127.0.0.1/32    scram-sha-256

Wählen Sie scram-sha-256 als Passwortmethode. Laut Dokumentation ist der Standardwert von password_encryption ebenfalls scram-sha-256. Dieselbe Seite nennt MD5 außerdem veraltet. Wählen Sie MD5 daher nicht für eine neue Installation.

Nach dem Bearbeiten der Datei laden Sie die Konfiguration neu. Ein Neustart ist dafür nicht nötig. Einer der Befehle unten reicht daher aus.

sudo systemctl reload postgresql
sudo -u postgres psql -c "SELECT pg_reload_conf();"

Die gefährlichste Methode ist trust. Denn laut Dokumentation erlaubt sie jedem, der den Server erreicht, die Anmeldung als beliebiger Benutzer ohne Passwort. Lassen Sie keine trust Zeile stehen, auch nicht für einen kurzen Test. Sonst vergessen Sie sie, und die Tür bleibt offen.

Lesen Sie daher die vorhandenen Zeilen und sichern Sie eine Kopie, bevor Sie etwas löschen. Weil die Reihenfolge zählt, bewirkt eine falsch platzierte Regel entweder nichts oder erlaubt mehr als gewollt.

Wie öffnen Sie den Fernzugriff sicher?

Die meisten Webprojekte brauchen die Datenbank nie im Internet. Teilen sich Anwendung und Datenbank einen Server, genügt localhost. Ein getrennter Anwendungsserver oder ein Reporting Werkzeug braucht dagegen Zugriff von außen. Dann ändern Sie drei Einstellungen gemeinsam.

  1. Ändern Sie zunächst listen_addresses in postgresql.conf. Der Standardwert ist localhost und erlaubt nur lokale Verbindungen. Der Server liest diese Einstellung nur beim Start, daher braucht sie einen Neustart.
  2. Danach fügen Sie in pg_hba.conf eine Zeile hinzu, die nur die nötige Adresse und Rolle erlaubt und eine verschlüsselte Verbindung erzwingt.
  3. Schließlich öffnen Sie den Port 5432 in der Firewall nur für diese eine Adresse.

Im Beispiel unten ist 203.0.113.10 eine Adresse für Dokumentationszwecke. Schreiben Sie stattdessen Ihre eigene Clientadresse. Auch die Ubuntu Dokumentation zeigt die Kombination aus hostssl und scram-sha-256.

hostssl    app_db    app_user    203.0.113.10/32    scram-sha-256
sudo ufw allow from 203.0.113.10 to any port 5432 proto tcp
sudo systemctl restart postgresql

Öffnen Sie den Port niemals für alle. Denn Angreifer scannen Datenbankports im Internet schnell und probieren Passwörter aus. Eine verschlüsselte Verbindung braucht außerdem ein TLS Zertifikat auf dem Server. Die Grundlagen dazu finden Sie in unserem Leitfaden zum SSL Zertifikat.

Wie finden Sie Verbindungsprobleme?

Können Sie sich nicht verbinden, raten Sie also nicht. Prüfen Sie der Reihe nach, denn jeder Schritt schließt eine Möglichkeit aus. Bestätigen Sie zunächst, dass der Dienst läuft, und gehen Sie dann zur Netzwerkschicht über.

  1. Zunächst führen Sie sudo systemctl status postgresql aus und prüfen Sie, ob der Dienst aktiv ist.
  2. Dann führen Sie sudo ss -ltnp | grep 5432 aus, um zu sehen, ob der Port lauscht und auf welcher Adresse.
  3. Danach testen Sie, ob der Client den Server überhaupt erreicht. Prüfen Sie die Firewallregel und den Netzwerkfilter des Anbieters.
  4. Lesen Sie die Fehlermeldung. Eine Meldung mit "pg_hba.conf entry" sagt Ihnen also, dass die Regel fehlt oder falsch ist.
  5. Zuletzt sehen Sie ins PostgreSQL Log. Unter Ubuntu liegen die Logs meist unter /var/log/postgresql/.

Verbinden Sie sich über einen Domainnamen, prüfen Sie auch den DNS Eintrag. Dabei helfen Ihnen unser DNS Abfrage Werkzeug und unser IP Abfrage Werkzeug.

Die Meldung "password authentication failed" heißt, dass eine Regel gepasst hat, aber Passwort oder Rolle falsch sind. Die Meldung "no pg_hba.conf entry" heißt, dass gar keine Regel gepasst hat. Wer beides unterscheidet, spart sich daher eine halbe Stunde Suche.

Wie fassen Sie die gesamte PostgreSQL Einrichtung zusammen?

Fassen wir also die verstreuten Befehle zu einem Ablauf zusammen. Die Reihenfolge unten ist ein sinnvoller Fahrplan für jemanden, der auf einem Ubuntu VPS bei null beginnt. Jeder Schritt hat dazu oben seine Details.

  1. Bereiten Sie zunächst ein Backup und Ihre Zugangsdaten vor. Prüfen Sie, dass Sie sich mit sudo Rechten am Server anmelden können.
  2. Dann installieren Sie PostgreSQL mit apt und prüfen Sie den Dienststatus.
  3. Verbinden Sie sich mit psql als postgres, dann legen Sie eine Rolle mit begrenzten Rechten und eine Datenbank für die Anwendung an.
  4. Danach öffnen Sie pg_hba.conf und lesen Sie die vorhandenen Zeilen. Fügen Sie bei Bedarf eine schmale Zeile mit scram-sha-256 hinzu und laden Sie die Konfiguration neu.
  5. Außerdem halten Sie die Verbindungsdaten Ihrer Anwendung in einer Umgebungsvariable oder einer privaten Konfigurationsdatei. Übertragen Sie das Passwort dabei nie in ein Code Repository.
  6. Zuletzt erstellen Sie ein Backup und testen es, indem Sie es in eine Testdatenbank zurückspielen.

Die Antwort auf die Frage, was ist PostgreSQL, ist leicht, der Betrieb braucht jedoch Disziplin. Schreiben Sie diese sechs Schritte daher einmal auf und wenden Sie dieselbe Liste auf jedes neue Projekt an. So überspringen Sie seltener einen Schritt.

Auch der Ort der Verbindungszeichenfolge ist wichtig, denn vielleicht betreiben Sie WordPress, Laravel oder eine individuelle Software. In allen liegen die Verbindungsdaten in einer Konfigurationsdatei oder Umgebungsvariable. Legen Sie diese Datei deshalb nicht in einen öffentlichen Ordner und schicken Sie sie nicht an die Versionsverwaltung.

Wie sollten Sie über Backups und Updates denken?

Das eigene Backup Werkzeug von PostgreSQL heißt pg_dump. Es erstellt zum Beispiel ein logisches Backup einer einzelnen Datenbank. Ein Backup im Custom Format spielen Sie danach mit pg_restore zurück. Die Befehle unten sind Beispiele, passen Sie die Namen daher an Ihr Projekt an.

pg_dump -h localhost -U app_user -Fc -f app_db.dump app_db
pg_restore -h localhost -U app_user -d new_db app_db.dump

Ein Backup allein reicht nicht. Sie müssen also auch die Wiederherstellung testen. Ein Backup, das den Test nicht besteht, gibt Ihnen keine Sicherheit. Probieren Sie es deshalb regelmäßig auf einer Testdatenbank aus. Bewahren Sie die Backups außerhalb des Servers an einem getrennten Ort auf.

Bei Updates ist der offizielle Rat klar: Die Community hält ein Update der Nebenversion für weniger riskant, als eine alte Nebenversion weiterzubetreiben. Für ein solches Update stoppen Sie den Server, installieren die neuen Programmdateien und starten neu. Ein Dump ist nicht nötig. Unter Ubuntu erledigt das meist einfach ein apt Update.

Ein Wechsel der Hauptversion ist dagegen anders. Das Datenverzeichnis ist inkompatibel, daher brauchen Sie Dump und Wiederherstellung oder das Werkzeug pg_upgrade. Planen Sie dafür ein Wartungsfenster und erstellen Sie vorher ein Backup.

Wann sollten Sie PostgreSQL Ihrem Hostinganbieter überlassen?

Ein eigener VPS gibt Ihnen zwar Kontrolle. Kontrolle bringt allerdings auch Verantwortung. In den folgenden Fällen ist es klüger, die Aufgabe dem Anbieter oder einem erfahrenen Systemadministrator zu überlassen.

  • Ein Wechsel der Hauptversion steht an der Datenbank eines laufenden Shops an.
  • Ihr Backup fehlt, oder Sie haben nie eine Wiederherstellung getestet.
  • Die Datenbank muss ins Internet, und Sie sind bei den Firewallregeln unsicher.
  • Fortgeschrittene Setups wie Replikation, Hochverfügbarkeit oder sehr große Datenmengen sind nötig.
  • Der Server steht unter starkem Angriff, und die Logs zeigen ungewöhnliche Verbindungsversuche.

Ein verwalteter Datenbankdienst ist eine weitere Option. Der Anbieter übernimmt Wartung, Backups und Updates, also können Sie sich auf die Anwendung konzentrieren. Wägen Sie dafür aber Kosten und verlorene Flexibilität ab.

Die Fragen an einen Anbieter haben wir in unserem Leitfaden zur Auswahl von Webhosting gesammelt. Nennen Sie daher in einem Supportticket die Uhrzeit des Problems, die Fehlermeldung und Ihre bisherigen Schritte. So findet der Anbieter die Ursache viel schneller.

Beeinflusst die Datenbankwahl Ladezeit und SEO?

Sie beeinflusst beides nicht direkt, aber indirekt. Denn Suchmaschinen schauen nicht auf die Marke Ihrer Datenbank. Langsame Abfragen verzögern allerdings die erste Antwort Ihres Servers, und diese Verzögerung zeigt sich in der Ladezeit. Das Problem ist also die Qualität von Abfragen und Indizes, nicht die Marke.

Leidet die Geschwindigkeit, ist die Reihenfolge einfach: Finden Sie dann zuerst die langsamen Abfragen. Dann prüfen Sie die Indizes, danach ergänzen Sie einen Cache. Zum Beispiel erklärt das Prinzip unser Artikel Caching mit Redis und Memcached. Zur Rolle der Geschwindigkeit in der Suche lesen Sie wie die Ladezeit SEO beeinflusst.

Im E-Commerce ist der Effekt leichter zu sehen. Warenkorb und Kasse schreiben nämlich in die Datenbank, deshalb senken Verzögerungen dort die Conversions. Das behandeln wir daher in Ladezeit im Onlineshop und Umsatz.

Auch die Sicherheit der Datenbank hängt mit SEO zusammen. Eine gekaperte Datenbank kann Angreifern erlauben, unerwünschte Inhalte oder Links auf Ihrer Website zu platzieren. Zu diesem Risiko lesen Sie also unseren OWASP Top 10 Leitfaden.

Welche Fehler passieren bei der PostgreSQL Einrichtung am häufigsten?

Die folgenden Fehler sind verbreitete Muster. Sie sind daher keine Feldstatistik, sondern eine Checkliste aus der offiziellen Dokumentation und allgemeiner Sicherheitspraxis.

  • Die Anwendung verbindet sich als Superuser postgres.
  • In pg_hba.conf bleibt trust stehen.
  • listen_addresses steht für alle offen, und die Firewall fehlt.
  • pg_hba.conf ist geändert, aber das Neuladen fehlt.
  • Nach einer Änderung von listen_addresses fehlt der Neustart.
  • Backups entstehen, aber niemand testet die Wiederherstellung.
  • Eine Hauptversion ohne Support läuft weiter.
  • Das Passwort steht im Klartext in der Kommandozeile.

Nutzen Sie diese Liste als Checkliste nach der Installation. Haken Sie also jeden Punkt einzeln ab. Notieren Sie außerdem Ihre Änderungen, denn in sechs Monaten fällt es schwer, sich an Grund und Umfang zu erinnern.

Was ist PostgreSQL kurz gesagt, und wie starten Sie?

PostgreSQL ist eine leistungsstarke, standardnahe und erweiterbare Datenbank. JSONB und das Ökosystem der Erweiterungen machen sie deshalb besonders attraktiv für Projekte mit komplexem Datenmodell. MySQL bleibt dagegen für viele einfache Seiten die richtige Wahl, wegen seiner Verbreitung und der Passung zu fertigen Systemen wie WordPress.

Zwei Befehle installieren es unter Ubuntu, doch die eigentliche Arbeit kommt danach: eine Rolle mit begrenzten Rechten, die richtige Zeile in pg_hba.conf, ein geschlossener Port und ein getestetes Backup. Diese vier Punkte bilden also zusammen das Sicherheitsgerüst der Einrichtung.

Möchten Sie nicht allein vorgehen, stehen wir bei Software und Infrastruktur an Ihrer Seite. Sprechen Sie mit unserem Team über individuelle Softwareentwicklung, dann wägen wir ab, welche Datenbank zu Ihrem Projekt passt. Für das Verständnis der Serverseite ist was ist ein Backend ein guter Einstieg.

Häufig gestellte Fragen

Ist PostgreSQL kostenlos?
Ja, PostgreSQL ist quelloffen und steht unter einer freizügigen Lizenz, daher zahlen Sie keine Lizenzgebühr für die Software. Trotzdem tragen Sie Kosten für Server, Wartung und Backups. Auf einem eigenen VPS übernehmen Sie diese Arbeit selbst. Bei einem verwalteten Dienst bezahlen Sie den Anbieter dafür. Fragen Sie Ihren Anbieter nach aktuellen Preisen.
Ist PostgreSQL oder MySQL besser?
Keines ist in jedem Fall besser, denn die Antwort hängt von Ihrem Projekt ab. WordPress und ähnliche fertige Systeme brauchen MySQL oder MariaDB. Für neue Software mit vielen JSON Daten, komplexem Reporting und fortgeschrittenen SQL Anforderungen ist PostgreSQL ein starker Kandidat. Beziehen Sie vor der Entscheidung auch die Kenntnisse Ihres Teams ein.
Kann ich PostgreSQL auf Shared Hosting nutzen?
Manche Hostingtarife bieten PostgreSQL an, andere nicht. Bei Shared Hosting können Sie keine Software auf dem Server installieren. Sie nutzen nur den Datenbankdienst, den Ihr Panel bereitstellt, daher liegen Version und Einstellungen beim Anbieter. Prüfen Sie Ihren Tarif oder fragen Sie den Anbieter. Für eine eigene Installation brauchen Sie einen VPS mit sudo Zugriff.
Wo liegt die Datei pg_hba.conf?
Unter Ubuntu liegt die Datei meist in /etc/postgresql/VERSION/main/pg_hba.conf, wobei VERSION die Hauptversion ist, die Sie installiert haben. Um sicherzugehen, führen Sie in psql den Befehl SHOW hba_file; aus. Er zeigt den echten Pfad. Laden Sie die Konfiguration nach dem Bearbeiten neu, sonst wirkt die Änderung nicht.
Wie verbinde ich mich per Fernzugriff mit PostgreSQL?
Stellen Sie drei Dinge gemeinsam ein. Erstens ändern Sie listen_addresses in postgresql.conf und starten den Dienst neu. Zweitens fügen Sie in pg_hba.conf eine Zeile hinzu, die nur Ihre Adresse und Rolle abdeckt und die Methode SCRAM nutzt. Drittens öffnen Sie Port 5432 in der Firewall nur für diese Adresse. Öffnen Sie ihn nie für alle.
Muss ich nach der Installation ein Passwort für den Benutzer postgres setzen?
Die Ubuntu Dokumentation zeigt ALTER USER als Weg, ein Passwort für die Rolle postgres zu setzen. Bei lokalen Verbindungen melden Sie sich ohnehin über den Systembenutzer an. Das Passwort brauchen Sie nur, wenn Sie sich über das Netzwerk verbinden. Nutzen Sie die Rolle postgres nie für Ihre Anwendung, sondern legen Sie eine eigene Rolle mit starkem Passwort an.
  • PostgreSQL
  • MySQL
  • Datenbank
  • Ubuntu
  • psql
  • pg_hba.conf
  • JSONB
  • VPS
Teilen:
Talha Aslan

Google Partner und Experte für digitales Marketing. Seit 2012 praktisch in SEO, Google Ads, Webdesign und E-Commerce Projekten; jeder Beitrag hier stammt aus dieser Erfahrung.

Nächstes Projekt

Sprechen wir über Ihr Projekt.

Ihre Anfrage geht direkt an Talha Aslan und Team: Strategie von Talha, Umsetzung durch ein erfahrenes Team. Das Erstgespräch ist kostenlos, wir hören zu und melden uns mit einer klaren Roadmap.