PostgreSQL 14 ist ein Open-Source-Datenbankmanagementsystem, das für seine Robustheit, Skalierbarkeit und seinen umfangreichen Funktionsumfang bekannt ist. Eine der wichtigsten Funktionen von PostgreSQL 14 war die Möglichkeit, inkrementelle Sortierung zu handhaben, was die Abfrageleistung für bestimmte Workloads erheblich verbesserte. Diese Version verbesserte auch die Parallelverarbeitung, das Vakuumieren und die JSON-Verarbeitung, was sie zu einer guten Wahl für Unternehmens- und Entwicklungsumgebungen macht. Obwohl es einige Versionen hinter der neuesten Version zurückliegt, bleibt PostgreSQL 14 eine zuverlässige und weithin unterstützte Option.
Um PostgreSQL 14 auf Fedora 40 oder 39 über das Befehlszeilenterminal zu installieren, können Sie direkt aus den PostgreSQL RPM-Builds importieren und installieren. Diese Methode stellt sicher, dass Sie über die neueste Version verfügen und macht zukünftige Upgrades unkompliziert.
Aktualisieren Sie Fedora vor der Installation von PostgreSQL 14
Aktualisieren Sie zunächst Ihr Fedora-System, um sicherzustellen, dass alle Pakete auf dem neuesten Stand sind. Dieser Schritt hilft, potenzielle Konflikte während der PostgreSQL-Installation zu vermeiden. Führen Sie den folgenden Befehl aus:
sudo dnf update --refresh
PostgreSQL RPM GPG-Schlüssel-Repository importieren
Beginnen Sie mit dem Importieren des PostgreSQL-Repositorys. Diese Aktion garantiert den Zugriff auf die aktuellsten PostgreSQL-Versionen. Wählen und importieren Sie das Repository, das Ihrer Version von Fedora Linux entspricht.
Importieren Sie PostgreSQL 14
Hinweis: Denken Sie daran, die richtige Version für Ihre Fedora-Distributionsversion zu importieren:
Verwenden Sie für Fedora 40 diesen Befehl:
sudo dnf install http://apt.postgresql.org/pub/repos/yum/reporpms/F-40-x86_64/pgdg-fedora-repo-latest.noarch.rpm
Für Fedora 39 ist der Befehl etwas anders:
sudo dnf install http://apt.postgresql.org/pub/repos/yum/reporpms/F-39-x86_64/pgdg-fedora-repo-latest.noarch.rpm
Standardmäßiges PostgreSQL-Modul deaktivieren (falls zutreffend)
Fedoras Standard-Repositorys enthalten PostgreSQL oft als Modul. Um die Installation aus dem PostgreSQL-Repository zu priorisieren, ist es ratsam, dieses Standardmodul zu deaktivieren. Verwenden Sie dazu den folgenden Befehl:
sudo dnf -qy module disable postgresql
PostgreSQL 14-Installation abschließen
Fahren Sie mit der Installation von PostgreSQL 14 fort
Verwenden Sie diesen Befehl, um den PostgreSQL 14-Server und seine Dokumentation zu installieren:
sudo dnf install postgresql14-server postgresql14-docs -y
Zusätzlich können Sie das Entwicklungspaket wie folgt installieren.
sudo dnf install postgresql14-devel
Schließlich können Sie einige häufig verwendete Zusatzmodule, Binärdateien und Bibliotheken installieren.
sudo dnf install postgresql14-libs postgresql14-odbc postgresql14-plperl postgresql14-plpython3 postgresql14-pltcl postgresql14-tcl postgresql14-contrib postgresql14-llvmjit
PostgreSQL 14-Datenbank initialisieren
Nach der Installation müssen Sie den folgenden Befehl ausführen, um die Datenbank zu initialisieren. Andernfalls funktioniert PostgreSQL nicht.
sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
PostgreSQL 14 Systemd-Dienst aktivieren
Standardmäßig ist PostgreSQL nicht aktiviert. Verwenden Sie den folgenden Befehl, um den Dienst sofort und beim Systemstart zu starten.
sudo systemctl enable postgresql-14 --now
Überprüfen Sie die PostgreSQL 14-Installation
Überprüfen Sie als Nächstes den Status, um sicherzustellen, dass die Software ohne Fehler installiert und aktiviert wurde. Verwenden Sie dazu den folgenden Befehl.
systemctl status postgresql-14
Systemd-Servicebefehle für PostgreSQL 14
Verwalten des PostgreSQL 14-Dienstes
Der PostgreSQL-Datenbankserver wird unter Fedora als systemd-Dienst mit dem Namen „postgresql-14“ ausgeführt. Systemadministratoren können diesen Dienst mithilfe einer Reihe von systemd-Befehlen verwalten, die für die routinemäßige Wartung und Fehlerbehebung unerlässlich sind.
Stoppen des PostgreSQL 14-Servers
Um den PostgreSQL-Dienst zu stoppen, beispielsweise für Wartungsarbeiten oder Konfigurationsänderungen, verwenden Sie diesen Befehl:
sudo systemctl stop postgresql-14
PostgreSQL 14-Server starten
Um den PostgreSQL-Dienst zu starten, insbesondere nach einem Stopp oder einer Erstinstallation, verwenden Sie den folgenden Befehl:
sudo systemctl start postgresql-14
Neustart des PostgreSQL 14-Servers
Der Neustartbefehl ist nützlich, wenn Sie neue Konfigurationen anwenden oder den PostgreSQL-Dienst zurücksetzen müssen. Er stoppt und startet den Dienst in einer Aktion:
sudo systemctl restart postgresql-14
PostgreSQL 14-Server neu laden
Der Befehl reload eignet sich ideal, um Konfigurationsänderungen anzuwenden, ohne die Datenbank anzuhalten. Er aktualisiert den Dienst, ohne den Datenbankbetrieb zu unterbrechen:
sudo systemctl reload postgresql-14
Überprüfen des PostgreSQL 14-Dienststatus
Um den Betriebsstatus des PostgreSQL-Dienstes zu überprüfen, verwenden Sie diesen Befehl. Er liefert Informationen über den Status des Dienstes, einschließlich der Angabe, ob er aktiv ist, im Leerlauf ist oder ob Probleme auftreten:
systemctl status postgresql-14
PostgreSQL 14 konfigurieren
Wechseln zum Postgres 14-Konto
Zugriff auf das Postgres 14-Konto
Während der Installation von PostgreSQL wird automatisch ein Benutzerkonto mit dem Namen „postgres“ erstellt. Dieses Konto ist mit der Standardrolle „Postgres“ verknüpft, die über Superuser-Berechtigungen verfügt. Um auf die PostgreSQL-Datenbank zuzugreifen, wechseln Sie mit dem folgenden Befehl zum Konto „postgres“:
sudo -i -u postgres
Eingeben der PostgreSQL 14-Eingabeaufforderung
Sobald Sie zum Benutzer „postgres“ gewechselt sind, können Sie die PostgreSQL-Eingabeaufforderung direkt aufrufen, indem Sie „psql“ eingeben. Nach erfolgreicher Verbindung ändert sich die Eingabeaufforderung des Terminals zu „postgres=#“, was auf eine aktive Verbindung zur Datenbank hinweist.
Um die PostgreSQL-Datenbank zu verlassen, geben Sie einfach Folgendes ein:
psql
Alternative Methode für den Zugriff auf PostgreSQL 14
Verwenden von Sudo für den direkten Zugriff
Alternativ können Sie mit der PostgreSQL-Datenbank interagieren, ohne das Konto zu wechseln, indem Sie Folgendes verwenden:
exit
Alternative zum Wechseln des Postgres-Kontos
Eine alternative Möglichkeit, mit der Postgres-Datenbank zu interagieren, ohne Benutzerkonten zu ändern, besteht darin, einen sudo-Befehl für die direkte Verbindung zu verwenden. Sie können dies tun, indem Sie Folgendes eingeben:
sudo -u postgres psql
Dieser Befehl ist effizient für schnelle Interaktionen mit der Datenbank, da er zusätzliche Terminalbefehle umgeht.
Zum Beenden geben Sie wie bei der ersten Methode „exit“ ein.
exit
Benutzer und Datenbank mit PostgreSQL 14 erstellen
Erstellen einer neuen Benutzerrolle
Nur Superuser und Rollen mit dem Berechtigungsrecht createrole können neue Rollen erstellen. Um einen Benutzer zu erstellen, verwenden Sie den Befehl:
sudo su - postgres -c "createuser <name>"
Ersetzen mit dem gewünschten Benutzernamen.
Erstellen einer neuen Datenbank
Erstellen Sie als Nächstes eine PostgreSQL-Datenbank für den neu erstellten Benutzer:
sudo su - postgres -c "createdb <namedb>"
Ersetzen durch den gewünschten Datenbanknamen.
Erteilen von Berechtigungen
Um dem neuen Benutzer Berechtigungen für die neue Datenbank zu erteilen, stellen Sie zunächst als Superuser eine Verbindung zur PostgreSQL-Datenbank her:
sudo -u postgres psql
Gewähren Sie dann dem neuen Benutzer alle Berechtigungen:
GRANT ALL PRIVILEGES ON DATABASE <usernamedb> TO <name>;
Ersetzen mit dem Datenbanknamen und mit dem Benutzernamen. Zum Beenden geben Sie exit ein.
exit
Konfigurieren Sie Firewalld für PostgreSQL 14
Festlegen von Firewalld-Regeln für PostgreSQL 14
Zur Sicherung von PostgreSQL gehört mehr als nur die Installation und Ausführung des Dienstes; es ist entscheidend, die Netzwerkzugriffskontrollen effektiv zu konfigurieren. Dadurch wird die Datenbank gesichert und sichergestellt, dass nur legitimer Datenverkehr sie erreicht. Wir werden die Einrichtung von Firewalld durchgehen, einem dynamischen Firewall-Manager in Fedora, um PostgreSQL zu schützen.
Erstellen einer Firewalld-Zone für PostgreSQL
Erstellen Sie zunächst in Firewalld eine dedizierte Zone für PostgreSQL. Dieser Ansatz ermöglicht eine genauere Kontrolle und Übersichtlichkeit bei der Verwaltung von PostgreSQL-spezifischen Regeln:
sudo firewall-cmd --permanent --new-zone=postgres
Dieser Befehl richtet eine „Postgres“-Zone ein und isoliert PostgreSQL-bezogene Firewall-Regeln für eine einfachere Verwaltung.
Beschränken des Zugriffs auf bekannte IP-Adressen
Zulassen des Zugriffs von einer einzelnen IP-Adresse
Für Szenarien, in denen nur ein Client oder Server auf PostgreSQL zugreifen soll:
sudo firewall-cmd --permanent --zone=postgres --add-source=1.2.3.4
Ersetzen Sie 1.2.3.4 durch die spezifische IP-Adresse, die Zugriff auf die Datenbank erfordert.
Zulassen eines Subnetzes
In Umgebungen wie Unternehmensnetzwerken kann es erforderlich sein, ein ganzes Subnetz zuzulassen:
sudo firewall-cmd --permanent --zone=postgres --add-source=192.168.1.0/24
Hier stellt 192.168.1.0/24 das Subnetz dar. Passen Sie diesen Wert an den gewünschten Netzwerkbereich an.
Gewähren des Zugriffs auf mehrere bestimmte IPs
Für Szenarien mit mehreren bekannten IPs, die Zugriff erfordern:
sudo firewall-cmd --permanent --zone=postgres --add-source=1.2.3.4
sudo firewall-cmd --permanent --zone=postgres --add-source=1.2.3.5
Wiederholen Sie diesen Befehl für jede IP-Adresse.
Verwalten des Portzugriffs für PostgreSQL 14
Konfigurieren des Standard-PostgreSQL-Ports
Für Standardinstallationen mit dem Standardport:
sudo firewall-cmd --permanent --zone=postgres --add-port=5432/tcp
Anpassen der Portkonfiguration
Wenn PostgreSQL auf einem nicht standardmäßigen Port (z. B. 5433) ausgeführt wird:
sudo firewall-cmd --permanent --zone=postgres --add-port=5433/tcp
Ändern Sie die Portnummer entsprechend Ihrer spezifischen PostgreSQL-Konfiguration.
Implementieren und Überprüfen der neuen Firewall-Regeln
Anwenden der Änderungen
Um die neuen Regeln zu aktivieren, laden Sie Firewalld neu:
sudo firewall-cmd --reload
Dieser Schritt stellt sicher, dass die neuen Konfigurationen sofort wirksam werden.
Überprüfen der Konfigurationen
Nach der Konfiguration ist es ratsam, die für die Zone „Postgres“ festgelegten Regeln zu überprüfen:
sudo firewall-cmd --list-all --zone=postgres
Dieser Befehl zeigt alle aktiven Regeln in der Zone „postgres“ an und ermöglicht so die Überprüfung des setup.exp
Remote-Zugriffskonfiguration für PostgreSQL 14
Einrichten von Abhörschnittstellen für den Remotezugriff
Ändern der PostgreSQL-Konfiguration
Um den Remotezugriff auf PostgreSQL zu ermöglichen, ist das Anpassen der Schnittstelleneinstellungen in der Datei postgresql.conf erforderlich. Dieser Vorgang ermöglicht es PostgreSQL, Verbindungen von verschiedenen Quellen anzunehmen.
Stellen Sie sicher, dass die FirewallD-Einstellungen vorhanden sind, um den Fernzugriff zu ermöglichen, wie in den vorhergehenden Abschnitten beschrieben.
Zugriff auf die Konfigurationsdatei
Um die Konfiguration von PostgreSQL 14 zu ändern, verwenden Sie den Nano-Texteditor:
sudo nano /var/lib/pgsql/14/data/postgresql.conf
Bearbeiten der Abhöradresse
Ändern Sie im Abschnitt „Verbindungseinstellungen“ die listen_addresses von „localhost“ entsprechend Ihren Anforderungen:
- Auf allen Schnittstellen lauschen: Um Verbindungen von jeder beliebigen Quelle zu akzeptieren, setzen Sie listen_addresses auf „*“.
listen_addresses = '*'
- Auf einer bestimmten Schnittstelle lauschen: Geben Sie eine IP-Adresse an, um die Verbindungen auf eine bestimmte Schnittstelle zu beschränken.
listen_addresses = '192.168.1.100'
Nach der Bearbeitung speichern Sie die Datei (Strg + O, dann Eingabe) und beenden sie (Strg + X).
Neustart des PostgreSQL 14-Dienstes
Wenden Sie die Änderungen an, indem Sie den PostgreSQL-Dienst neu starten:
sudo systemctl restart postgresql-14
Bestätigen der Abhörports
Verwenden Sie das Dienstprogramm „ss“, um zu überprüfen, ob PostgreSQL die angegebenen Ports überwacht:
ss -nlt | grep 5432
Bei Erfolg sollten Sie die Ports in Ihrem Terminalport sehen.
Erweiterte Remote-Verbindungseinstellungen in pg_hba.conf
Anpassen des Zugriffs in der Datei pg_hba.conf
Zur feinkörnigen Kontrolle über Remoteverbindungen bietet die Datei pg_hba.conf verschiedene Anpassungsoptionen.
Bearbeiten von pg_hba.conf
Öffnen Sie die Datei pg_hba.conf:
sudo nano /var/lib/pgsql/14/data/pg_hba.conf
Konfigurieren von Remotezugriffsregeln
Zulassen bestimmter Benutzer und Datenbanken
So beschränken Sie den Zugriff auf einen bestimmten Benutzer und eine bestimmte Datenbank von einer bestimmten IP-Adresse aus:
Host meineDatenbank meinBenutzer 192.168.1.100/32 md5
Zulassen eines Subnetzes
Für einen umfassenderen Zugriff, z. B. auf ein ganzes Subnetz:
Host alle alle 192.168.1.0/24 md5
Verwenden verschiedener Authentifizierungsmethoden
Wählen Sie eine für Ihre Umgebung geeignete Authentifizierungsmethode. Für die kennwortbasierte Authentifizierung:
Host alle alle 0.0.0.0/0 md5
Zur vertrauenswürdigen Authentifizierung (beachten Sie die Sicherheitsrisiken):
Host alle alle 0.0.0.0/0 Vertrauen
Nachdem Sie die gewünschten Regeln konfiguriert haben, speichern und beenden Sie den Editor.
Anwenden und Überprüfen von Änderungen
Starten Sie PostgreSQL neu, um die neuen Konfigurationen zu implementieren:
sudo systemctl restart postgresql-14
Überprüfen Sie die effektiven Einstellungen in pg_hba.conf mit:
cat /var/lib/pgsql/14/data/pg_hba.conf
Konfigurieren Sie SELinux für PostgreSQL 14
Bei der Konfiguration von PostgreSQL 14 auf Fedora ist es wichtig, SELinux (Security-Enhanced Linux) richtig einzurichten. SELinux fügt eine Sicherheitsebene hinzu, indem es Zugriffskontrollrichtlinien durchsetzt. Eine falsche Konfiguration kann zu häufigen Problemen wie Zugriffsverweigerungen oder Dienstunterbrechungen führen.
Einstellen des permissiven Modus für SELinux zur Fehlerbehebung
Vorübergehendes Anpassen des SELinux-Modus
Wenn Sie Probleme beim Starten oder ordnungsgemäßen Funktionieren von PostgreSQL haben, sollten Sie SELinux vorübergehend in den Modus „Permissive“ versetzen. Dieser Modus erlaubt Vorgänge, die im Modus „Enforcing“ blockiert würden, protokolliert sie jedoch zur Überprüfung:
sudo setenforce 0
Überwachungsprotokolle für AVC-Ablehnungen
Überprüfen Sie die SELinux-Protokolle auf AVC-Ablehnungen (Access Vector Cache):
sudo restorecon -Rv /var/lib/pgsql/14/data/
Dieser Befehl hilft dabei, SELinux-Richtlinien zu identifizieren, die die ordnungsgemäße Funktion von PostgreSQL verhindern.
Konfigurieren von SELinux-Richtlinien für PostgreSQL 14
Wiederherstellen des Standard-SELinux-Kontexts
Um sicherzustellen, dass Dateien den richtigen SELinux-Kontext haben, verwenden Sie den Befehl restorecon. Falsche Kontexte in PostgreSQL-Verzeichnissen oder -Dateien können zu Zugriffsproblemen führen:
sudo setsebool -P postgresql_can_rnetwork 1
Dieser Befehl aktiviert den Booleschen Wert postgresql_can_rnetwork und ermöglicht Netzwerkverbindungen.
Erweiterte SELinux-Konfiguration
Anpassen von SELinux-Richtlinien
In komplexeren Konfigurationen, z. B. wenn PostgreSQL mit anderen Diensten oder benutzerdefinierten Ports interagiert, kann die Erstellung benutzerdefinierter SELinux-Richtlinien erforderlich sein. Verwenden Sie das Tool audit2allow, um benutzerdefinierte Richtlinienmodule basierend auf spezifischen Anforderungen zu generieren.
Anwenden benutzerdefinierter Richtlinien
Nachdem Sie benutzerdefinierte Richtlinien erstellt haben, wenden Sie sie wie folgt an:
sudo semodule -i my_postgresql.pp
Ersetzen Sie my_postgresql.pp durch den Namen Ihrer Richtliniendatei.
Überprüfen der SELinux-Einstellungen
Überprüfen des SELinux-Status
Bestätigen Sie den SELinux-Status, um sicherzustellen, dass er für Ihre PostgreSQL-Installation richtig eingestellt ist:
sestatus
Validieren von Dateikontexten
Überprüfen Sie, ob die mit PostgreSQL in Zusammenhang stehenden Dateien und Verzeichnisse über die entsprechenden SELinux-Kontexte verfügen:
ls -Z /var/lib/pgsql/14/data/
Abschluss
Wenn PostgreSQL 14 erfolgreich auf Ihrem Fedora-System installiert ist, können Sie dessen erweiterte Funktionen und robuste Leistung für Ihre Datenbankanforderungen nutzen. Suchen Sie regelmäßig nach Updates und zukünftigen Upgrades der PostgreSQL RPM-Builds, um Ihr System auf dem neuesten Stand zu halten.
Weitere Informationen zur Verwendung von PostgreSQL finden Sie auf der offiziellen Dokumentation.