Wie man PostgreSQL auf Rocky Linux installiert
Auf Rocky Linux können Sie PostgreSQL mit dem postgresql-server-Paket aus dem Standard-Repository installieren. Nach der Installation müssen Sie den Datenbank-Cluster initialisieren und den Dienst aktivieren. Für den Fernzugriff müssen Sie listen_addresses, pg_hba.conf, die Firewall und TLS zusammen konfigurieren.
Die Hauptversion von PostgreSQL und der angegebene Dienstname können je nach Rocky-Linux-Version und den aktiven Repositories variieren. Überprüfen Sie die verfügbaren Pakete und die von Ihrer Anwendung benötigte Version vor der Installation.
Überprüfen, welche PostgreSQL-Versionen verfügbar sind
cat /etc/rocky-release
dnf info postgresql-server
dnf module list postgresql
dnf module ist je nach Rocky Linux- und DNF-Version möglicherweise nicht verfügbar. Wenn eine bestimmte Hauptversion von PostgreSQL erforderlich ist, entscheiden Sie zunächst, ob Sie den Lebenszyklus des Rocky-Standardrepositories oder das vom PostgreSQL-Projekt bereitgestellte PGDG-Repository verwenden möchten, und mischen Sie keine Serverpakete aus verschiedenen Repositories.
PostgreSQL installieren und initialisieren
Server und Client installieren
sudo dnf install postgresql-server postgresql
Überprüfen Sie die installierte Version und die Pakete.
psql --version
rpm -q postgresql-server postgresql
Initialisieren Sie den Datenbank-Cluster
Im Rocky-Standardpaket werden im Allgemeinen die folgenden Werkzeuge verwendet.
sudo postgresql-setup --initdb
Die Initialisierung wird nur einmal in einem leeren Datenverzeichnis durchgeführt. Wenn Sie auf einem Server mit vorhandenen Daten reinitialisieren, kann ein separates Cluster erstellt werden oder es besteht die Gefahr einer Datenbeschädigung, daher sollten Sie zuerst das Datenverzeichnis und die Backups überprüfen.
sudo postgresql-setup --help
Dienststart und automatische Ausführung
sudo systemctl enable --now postgresql
systemctl status postgresql
Versionsspezifische Pakete im PGDG-Repository können unterschiedliche Servicenamen und Initialisierungsbefehle haben, wie postgresql-16. Überprüfen Sie die offiziellen Anweisungen für das installierte Paket und das Ergebnis von systemctl list-unit-files 'postgresql*'.
Lokaler Zugriff und grundlegende Sicherheitseinstellungen
Verbinden Sie sich als Betriebssystemkonto postgres
sudo -iu postgres psql
Die anfängliche lokale Authentifizierung kann die Peer-Methode verwenden, die das Betriebssystemkonto mit der Datenbankrolle verknüpft. Das Passwort der PostgreSQL-Rolle postgres und das Passwort des Linux-Kontos postgres sind unterschiedlich.
Passwörter sicher setzen
Die Verwendung von \password innerhalb von psql ermöglicht es, das Passwort nicht in SQL-Anweisungen und der Shell-Historie zu hinterlegen.
\password postgres
Verwenden Sie keine administrativen Rollen in Anwendungen; erstellen Sie stattdessen zweckgebundene Rollen und Datenbanken.
CREATE ROLE appuser LOGIN;
\password appuser
CREATE DATABASE appdb OWNER appuser;
Überprüfen Sie den tatsächlichen Speicherort der Konfigurationsdatei.
SHOW config_file;
SHOW hba_file;
SHOW data_directory;
Da der Pfad je nach Paket und Version variieren kann, gehen Sie nicht einfach vom Pfad in Online-Dokumenten aus; verwenden Sie den vom Server gemeldeten Wert.
Sichere Remote-Verbindungen erlauben
Listener-Adressen einschränken
Es wird empfohlen, listen_addresses in postgresql.conf auf eine bestimmte private IP des Servers zu beschränken.
listen_addresses = '192.0.2.20'
192.0.2.20 ist ein Beispiel für die Dokumentation. Ersetzen Sie es durch die tatsächliche Serveradresse. * bedeutet alle Schnittstellen, was praktisch ist, aber möglicherweise unnötige Netzwerke aussetzt. Der Standard für PostgreSQL ist der Zugriff über die lokale Schleife. Weitere Details finden Sie in der offiziellen PostgreSQL-Dokumentation zu Verbindungseinstellungen.
Einschränkung von Clients und Authentifizierung in pg_hba.conf
Zum Beispiel, wenn Sie nur möchten, dass ein bestimmter Anwendungsserver eine Verbindung zu appdb als appuser herstellt, können Sie die folgenden Einträge überprüfen.
hostssl appdb appuser 192.0.2.10/32 scram-sha-256
pg_hba.conf wird von oben nach unten überprüft, und es wird nur die erste passende Regel verwendet. Wenn Sie großzügige Zulassungsregeln oben platzieren, werden nachfolgende Einschränkungsregeln nicht angewendet. Für detaillierte Felder und die Reihenfolge siehe die offizielle PostgreSQL pg_hba.conf Dokumentation.
Quelladressen mit der Firewall einschränken
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.0.2.10/32" port port="5432" protocol="tcp" accept'
Nach dem Testen neuer Client-Verbindungen die Regeln dauerhaft machen.
sudo firewall-cmd --runtime-to-permanent
Setzen Sie Datenbankports nicht direkt dem gesamten Internet aus. Verwenden Sie private Netzwerke, VPNs, Sicherheitsgruppen und Firewalls zusammen.
Anwenden und Überprüfen von Einstellungen
Authentifizierungsregeln neu laden
Einstellungen, die neu geladen werden können, wie pg_hba.conf, können wie folgt erneut eingelesen werden.
sudo -iu postgres psql -c 'SELECT pg_reload_conf();'
Die Regelsyntax kann in der Systemansicht überprüft werden.
sudo -iu postgres psql -c 'SELECT line_number, type, database, user_name, address, auth_method, error FROM pg_hba_file_rules;'
Anwenden von Einstellungen, die einen Neustart erfordern
Einstellungen, die beim Serverstart angewendet werden, wie listen_addresses, erfordern einen Neustart.
sudo systemctl restart postgresql
sudo systemctl status postgresql
Testen von abhörbereiten Ports und Verbindungen
ss -lntp | grep 5432
psql 'host=192.0.2.20 dbname=appdb user=appuser sslmode=verify-full'
Für verify-full muss der Server TLS bereitstellen und der Client dessen Zertifikatskette anhand einer vertrauenswürdigen CA prüfen können. Der angegebene Host muss zum Serverzertifikat passen; bei einer IP-Adresse wie im Beispiel muss die Zertifikatsprüfung diese IP-Adresse abdecken. Eine reine Passwortauthentifizierung ersetzt die Transportabsicherung nicht.
Vorbereitungspunkte vor der Operation
- Regelmäßige logische und physische Backups sowie tatsächliche Wiederherstellungstests
- Planung für die Anwendung unterstützter kleiner Updates
- Minimalberechtigungsrollen und Passwortrotation pro Anwendung
- TLS-Zertifikatsüberprüfung und Nutzung eines privaten Netzwerks oder VPN
- Überwachung von Festplattennutzung, Verbindungsanzahl, Latenz, Checkpoints und Fehlerprotokollen
- Kompatibilitätsprüfung und Vorbereitung separater Verfahren vor einem Major-Version-Upgrade
PostgreSQL-Hauptversions-Upgrades unterscheiden sich von einfachen Paket-Updates. Planen Sie den offiziellen Upgrade-Pfad entsprechend der Version, wie pg_upgrade, logische Replikation oder Dump und Restore.
Häufig gestellte Fragen
Kann den Befehl postgresql-setup nicht finden
Überprüfen Sie das installierte Repository und die Paketnamen. Die Initialisierungstools und Servicenamen können sich zwischen den Rocky-Standardpaketen und PGDG-Versionsspezifischen Paketen unterscheiden.
Externe Verbindungen werden weiterhin abgelehnt
Überprüfen Sie listen_addresses, die erste passende Regel in pg_hba.conf, den Service-Listening-Port, firewalld und die Cloudsicherheitsgruppen der Reihe nach.
Ist es in Ordnung, 0.0.0.0/0 in pg_hba.conf zuzulassen?
Es deckt das gesamte Internet ab, daher ist es im Allgemeinen am besten, es zu vermeiden. Beschränken Sie sich auf die feste Adresse des tatsächlichen Anwendungsservers oder eines privaten Subnetzes und verwenden Sie TLS und minimale Berechtigungen.
Nach dem Ändern der Konfigurationsdateien, sollte ich reload oder restart verwenden?
Es hängt vom Element ab. pg_hba.conf kann neu geladen werden, aber listen_addresses erfordert einen Neustart. Prüfen Sie pg_settings.pending_restart und den Kontext in der offiziellen Dokumentation.
Zusammenfassung
Unter Rocky Linux wird PostgreSQL in der Reihenfolge Paketinstallation, Cluster-Initialisierung und Service-Aktivierung vorbereitet. Für Remote-Verbindungen wenden Sie spezifische Listening-Adressen, eng gefasste pg_hba.conf-Regeln, Firewall-Quellenbeschränkungen und TLS zusammen an.
Da Konfigurationspfade und Servicenamen je nach Installationsquelle und Version variieren können, ist es sicher, auf Grundlage der von PostgreSQL direkt gemeldeten Pfade und der Dokumentation des installierten Pakets zu arbeiten.




