PostgreSQL installieren: Anleitung für Linux-Server
PostgreSQL installieren unter Linux: Rollen und Datenbanken anlegen, Zugriff über pg_hba.conf, Fernzugriff, Backups mit pg_dump und Performance-Tuning.

Inhalt
PostgreSQL ist eine leistungsfähige, quelloffene relationale Datenbank, bei der Datenintegrität großgeschrieben wird. Dank fortgeschrittener SQL-Funktionen, JSON-Unterstützung, der Geodaten-Erweiterung PostGIS und einer robusten Transaktionsverwaltung ist sie in Django-, Ruby-on-Rails-, Laravel- und Node.js-Projekten sehr beliebt. PostgreSQL auf dem eigenen Server zu installieren dauert nur wenige Minuten; was Sie wirklich verstehen müssen, ist, wie Rollen und Zugriffsregeln funktionieren.
In dieser Anleitung erklären wir, wie Sie PostgreSQL unter Ubuntu, Debian und AlmaLinux installieren, Rollen und Datenbanken anlegen, den Zugriff über pg_hba.conf steuern, sich sicher aus der Ferne verbinden, Backups erstellen und die wichtigsten Performance-Einstellungen vornehmen.
PostgreSQL und MariaDB im Vergleich
| Eigenschaft | PostgreSQL | MariaDB / MySQL |
|---|---|---|
| Stärken | Komplexe Abfragen, Datenintegrität, JSON, PostGIS | Einfache, schnelle, leselastige Aufgaben |
| Typischer Einsatz | Django, Rails, moderne Node.js- und Laravel-Projekte | WordPress, PHP-Anwendungen, FiveM |
| Benutzermodell | Rollen und Regeln in pg_hba.conf | Zuordnung von Benutzer und Host |
| Standardport | 5432 | 3306 |
Verwenden Sie die Datenbank, die Ihre Anwendung empfiehlt. Die Installation von MariaDB erklären wir in unserer Anleitung MySQL und MariaDB installieren.
PostgreSQL unter Ubuntu und Debian installieren
Nachdem Sie sich per SSH mit Ihrem Server verbunden haben:
sudo apt update
sudo apt install postgresql
sudo systemctl status postgresql
Das Repository der Distribution installiert die PostgreSQL-Version, die mit der jeweiligen Version der Distribution ausgeliefert wird. Wenn Sie eine neuere Hauptversion brauchen, können Sie das offizielle APT-Repository von PostgreSQL hinzufügen.
Unter AlmaLinux und Rocky Linux:
sudo dnf install postgresql-server
sudo postgresql-setup --initdb
sudo systemctl enable --now postgresql
Rollen und die erste Verbindung
In PostgreSQL heißen Benutzer Rollen. Bei der Installation werden eine Administratorrolle namens postgres und ein gleichnamiger Benutzer des Betriebssystems angelegt. Bei lokalen Verbindungen wird standardmäßig die Peer-Authentifizierung verwendet: Der Name Ihres Betriebssystem-Benutzers muss mit dem Namen der Rolle übereinstimmen. Als Administrator verbinden Sie sich deshalb so:
sudo -u postgres psql
Befehle, die Sie in psql häufig brauchen:
| Befehl | Was er tut |
|---|---|
\l | Listet die Datenbanken auf |
\du | Listet die Rollen auf |
\c datenbank | Wechselt zu einer anderen Datenbank |
\dt | Listet die Tabellen der aktuellen Datenbank auf |
\q | Beendet psql |
Datenbank und Rolle anlegen
Legen Sie für jede Anwendung eine eigene Rolle und eine Datenbank an, die nur dieser Rolle gehört:
CREATE ROLE app WITH LOGIN PASSWORD 'ein-starkes-passwort';
CREATE DATABASE app OWNER app;
Die Rolle, der die Datenbank gehört, kann darin Tabellen anlegen und verwalten, hat aber keinen Zugriff auf Ihre anderen Datenbanken. Die Verbindungsadresse Ihrer Anwendung sieht so aus:
postgresql://app:ein-starkes-passwort@127.0.0.1:5432/app
Um sich auf der Kommandozeile mit dieser Rolle zu verbinden, ergänzen Sie -h 127.0.0.1; so melden Sie sich statt per Peer mit Passwort über TCP an:
psql -h 127.0.0.1 -U app app
Zugriffsregeln mit pg_hba.conf
Wer sich von wo und mit welcher Methode verbinden darf, legt die Datei pg_hba.conf fest. Unter Ubuntu und Debian liegt sie unter /etc/postgresql/<version>/main/pg_hba.conf. Jede Zeile ist eine Regel, und es gilt die erste Regel, die von oben nach unten passt:
# TYP DATENBANK BENUTZER ADRESSE METHODE
local all postgres peer
local all all peer
host all all 127.0.0.1/32 scram-sha-256
host all all ::1/128 scram-sha-256
local: Verbindungen über den Unix-Socket, also vom Server selbst aus.host: Verbindungen über TCP/IP.scram-sha-256: Sichere Authentifizierung mit Passwort. Verwenden Sie diese Methode statt des altenmd5.
Laden Sie die Einstellungen nach einer Änderung der Datei neu:
sudo systemctl reload postgresql
Sicherer Fernzugriff
Empfohlen ist ein SSH-Tunnel. PostgreSQL lauscht weiterhin nur auf dem Server selbst, und der Port 5432 wird nie im Internet freigegeben:
ssh -L 5433:127.0.0.1:5432 benutzer@203.0.113.10
Solange dieser Befehl läuft, verbinden Sie sich mit pgAdmin oder DBeaver mit der Adresse 127.0.0.1:5433 auf Ihrem eigenen Computer. Beide Werkzeuge bieten in den Verbindungseinstellungen auch eine fertige Option für SSH-Tunnel.
Wenn eine direkte Verbindung nötig ist (etwa für eine Anwendung auf einem anderen Server):
- Ändern Sie in der Datei
postgresql.confdie Zeilelisten_addresses = 'localhost'inlisten_addresses = '*'. - Fügen Sie der Datei
pg_hba.confeine Regel nur für die IP-Adresse dieses Servers hinzu:host app app 198.51.100.7/32 scram-sha-256 - Starten Sie PostgreSQL neu und öffnen Sie den Port in der Firewall nur für diese Adresse:
sudo systemctl restart postgresql sudo ufw allow from 198.51.100.7 to any port 5432 proto tcp
Wenn Sie den Port 5432 für alle öffnen, wird Ihr Server automatisierten Angriffen ausgesetzt, die Passwörter durchprobieren. Wie Ports funktionieren, erklären wir in unserem Artikel Was ist ein Port?.
Backup und Wiederherstellung
pg_dump erstellt ein konsistentes Backup einer laufenden Datenbank, ohne sie zu sperren. Das komprimierte Custom-Format (-Fc) ist sowohl klein als auch flexibel:
sudo -u postgres pg_dump -Fc app > app-$(date +%F).dump
So stellen Sie das Backup wieder her:
pg_restore -h 127.0.0.1 -U app -d app --clean app-2026-10-20.dump
Rollen und andere serverweite Einstellungen sind nicht im Backup von pg_dump enthalten; sichern Sie sie separat mit pg_dumpall --globals-only. Wie Sie Backups mit Cron automatisieren und unabhängig vom Server aufbewahren, erklären wir in unserem Artikel Server Backup.
Wichtige Performance-Einstellungen
Die Standardeinstellungen von PostgreSQL sind für sehr kleine Server gewählt. Diese Einstellungen in der Datei postgresql.conf machen einen großen Unterschied:
shared_buffers = 2GB
effective_cache_size = 6GB
work_mem = 16MB
maintenance_work_mem = 512MB
Die Beispielwerte gelten für einen Server mit 8 GB RAM, auf dem nur die Datenbank läuft:
shared_buffers: Der eigene Cache von PostgreSQL. Etwa ein Viertel des RAM ist ein guter Startwert.effective_cache_size: Teilt dem Abfrageplaner mit, wie viel Arbeitsspeicher einschließlich des Dateicaches des Betriebssystems zur Verfügung steht; üblich ist ein Wert zwischen der Hälfte und drei Vierteln des RAM.work_mem: Der Arbeitsspeicher, der jeder Sortier- und Join-Operation zugewiesen wird. Zu hohe Werte können bei vielen gleichzeitigen Abfragen den Arbeitsspeicher aufbrauchen.
Starten Sie PostgreSQL nach den Änderungen neu. Um langsame Abfragen zu finden, schreibt die Einstellung log_min_duration_statement = 500 alle Abfragen ins Log, die länger als 500 Millisekunden dauern; mit EXPLAIN ANALYZE sehen Sie, warum eine Abfrage langsam ist.
Nodesty-Server für PostgreSQL
Die Performance einer Datenbank hängt stark vom Arbeitsspeicher und von der Geschwindigkeit des Speichers ab. Die AMD EPYC 7763 vServer von Nodesty eignen sich mit ihrem großen RAM dafür, große Datenbanken im Arbeitsspeicher zu halten, die AMD Ryzen 9 9950X vServer mit ihrer hohen Single-Core-Leistung für Anwendungen, die schnell antworten müssen. Beide Pakete umfassen NVMe-Speicher, DDoS-Schutz durch nShield und kostenlose tägliche Backups, die 7 Tage lang aufbewahrt werden.
Häufig gestellte Fragen
Sollte ich PostgreSQL oder MariaDB verwenden?
Wählen Sie die Datenbank, die Ihre Software empfiehlt. WordPress und viele PHP-Anwendungen erwarten MySQL oder MariaDB. Für neue Projekte mit komplexen Abfragen, JSON-Daten, Geodaten und strenger Datenintegrität ist PostgreSQL eine starke Wahl. Beide sind Open Source und kostenlos.
Wie lautet das Passwort des Benutzers postgres?
Bei einer Standardinstallation hat der Benutzer postgres kein Passwort. Sie verbinden sich auf dem Server mit dem Befehl sudo -u postgres psql über den Benutzer des Betriebssystems (Peer-Authentifizierung). Legen Sie für Ihre Anwendungen statt postgres immer eine eigene Rolle mit Passwort an.
Woher kommt der Fehler „Peer authentication failed“?
Bei lokalen Verbindungen erwartet PostgreSQL standardmäßig, dass der Benutzername des Betriebssystems mit der Datenbankrolle übereinstimmt. Wenn Sie sich mit einer anderen Rolle verbinden, ergänzen Sie die Verbindung um -h 127.0.0.1, um sich über TCP mit Passwort anzumelden, oder ändern Sie die lokale Regel in der Datei pg_hba.conf.
Wie aktualisiere ich PostgreSQL auf eine neue Version?
Bei einem Upgrade auf eine neue Hauptversion sind die Datendateien nicht direkt mit der neuen Version kompatibel. Bei kleinen Datenbanken ist es am einfachsten, mit pg_dumpall einen Dump der alten Version zu erstellen und in die neue Version einzuspielen; bei großen Datenbanken verwenden Sie das Werkzeug pg_upgrade. Erstellen Sie in beiden Fällen vorher ein vollständiges Backup.
Wie verbinde ich mich sicher von außen mit der Datenbank?
Am sichersten ist ein SSH-Tunnel; damit verbinden Sie sich mit Werkzeugen wie pgAdmin oder DBeaver, ohne den Port 5432 im Internet freizugeben. Ist eine direkte Verbindung nötig, ändern Sie die Einstellung listen_addresses, fügen Sie der Datei pg_hba.conf eine Regel nur für die IP-Adresse hinzu, die sich verbinden soll, und öffnen Sie den Port in der Firewall nur für diese Adresse.
Wie viel RAM braucht PostgreSQL?
Eine kleine Anwendung kommt mit einigen hundert MB aus. Die Performance hängt vor allem von shared_buffers und dem Dateicache des Betriebssystems ab; wenn häufig genutzte Daten im Arbeitsspeicher bleiben, werden Abfragen spürbar schneller. Auf einem Server, auf dem nur die Datenbank läuft, ist etwa ein Viertel des RAM ein guter Startwert für shared_buffers.
Über den Autor
Nodesty-Team · Infrastruktur und Support
Das Nodesty-Team betreibt unsere Server, unser Netzwerk und unseren DDoS-Schutz im Alltag und beantwortet Support-Anfragen rund um die Uhr. Diese Ratgeber entstehen aus dieser Arbeit.
Verwandte Artikel

Ubuntu Upgrade: Server auf die neue LTS-Version bringen
Ubuntu Server auf die neue LTS-Version upgraden: Backup, Vorbereitung, do-release-upgrade, SSH-Verbindung, Kontrollen danach und Neuinstallation erklärt.

Was ist ein Load Balancer? So funktioniert Lastverteilung
Was ist ein Load Balancer und wofür? Methoden der Lastverteilung, Health Checks, Sessions, Load Balancing mit Nginx, HAProxy und wann Sie einen brauchen.

Laravel deployen: Anwendung auf dem vServer veröffentlichen
Laravel deployen auf dem Server: PHP-FPM, Composer, .env, Datenbank, Dateirechte, Nginx, Queue Worker, Scheduler, SSL und Updates Schritt für Schritt.