Einführung
PostgreSQL ist das fortschrittlichste RDBMS und pgAdmin ist eine Web-UI für Postgres. Hier sehen Sie, wie Sie PostgreSQL mit pgAdmin auf CentOS / RHEL 8 installieren.
Was ist PostgreSQL?
PostgreSQL (auch bekannt als Postgres ) ist ein kostenloses Open-Source-Managementsystem für relationale Datenbanken (RDBMS), das auf Erweiterbarkeit und SQL-Konformität Wert legt. PostgreSQL hieß ursprünglich POSTGRES und bezog sich auf seine Ursprünge als Nachfolger von Ingres Datenbank. 1996 wurde das Projekt in PostgreSQL umbenannt, um seine Unterstützung für SQL widerzuspiegeln.
PostgreSQL bietet Transaktionen mit den Eigenschaften Atomicity, Consistency, Isolation, Durability (ACID), automatisch aktualisierbare Ansichten, materialisierte Ansichten, Trigger, Fremdschlüssel und gespeicherte Prozeduren. Es wurde entwickelt, um eine Reihe von Workloads zu bewältigen, von einzelnen Computern bis hin zu Data Warehouses oder Webdiensten mit vielen gleichzeitigen Benutzern. Es ist die Standarddatenbank für macOS Server und ist auch für Linux, FreeBSD, OpenBSD und Windows verfügbar.
Was ist pgAdmin?
pgAdmin ist ein kostenloses und quelloffenes Verwaltungstool mit grafischer Benutzeroberfläche (GUI) für Postgres-Datenbankserver.
Darüber hinaus ist pgAdmin in Desktop- und Weboberflächen verfügbar. pgAdmin ist das funktionsreichste und beliebteste unter den anderen Verwaltungstools für PostgreSQL.
Linux-Server-Pakete aktualisieren
Aktualisieren Sie also Linux-Serverpakete mit dnf Befehl.
# dnf update -y
Installieren von Postgres Official
Um die neueste Version zu installieren, müssen wir das offizielle Yum-Repository von PostgreSQL auf unserem Linux-Server hinzufügen.
[root@unixcop ~]# dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Failed to set locale, defaulting to C.UTF-8
Last metadata expiration check: 21:31:22 ago on Sun Aug 8 10:39:31 2021.
pgdg-redhat-repo-latest.noarch.rpm 18 kB/s | 12 kB 00:00
Dependencies resolved.
================================================================================
Package Architecture Version Repository Size
================================================================================
Installing:
pgdg-redhat-repo noarch 42.0-19 @commandline 12 k
Transaction Summary
================================================================================
Install 1 Package
Total size: 12 k
Installed size: 12 k
Is this ok [y/N]: y
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : pgdg-redhat-repo-42.0-19.noarch 1/1
Verifying : pgdg-redhat-repo-42.0-19.noarch 1/1
Installed:
pgdg-redhat-repo-42.0-19.noarch
Complete!
[root@unixcop ~]#
Deaktivieren Sie das PostgreSQL-Modul im Standard-yum-Repository, indem Sie den folgenden Befehl ausführen.
# dnf -qy module disable postgresql
Installieren des Postgres-Datenbankservers auf CentOS 8
Installieren Sie also den Postgres-Datenbankserver 13 (aktuell zum Zeitpunkt des Schreibens dieses Artikels) auf Ihrem Linux-Server, indem Sie dnf verwenden Befehl.
[root@unixcop ~]# dnf install -y postgresql13-server
Last metadata expiration check: 0:01:38 ago on Mon Aug 9 10:31:26 2021.
Dependencies resolved.
======================================================================================================================================================
Package Architecture Version Repository Size
======================================================================================================================================================
Installing:
postgresql13-server x86_64 13.3-2PGDG.rhel8 pgdg13 5.5 M
Installing dependencies:
libicu x86_64 60.3-2.el8_1 baseos 8.8 M
postgresql13 x86_64 13.3-2PGDG.rhel8 pgdg13 1.5 M
postgresql13-libs x86_64 13.3-2PGDG.rhel8 pgdg13 413 k
Transaction Summary
======================================================================================================================================================
Install 4 Packages
Total download size: 16 M
Installed size: 63 M
Downloading Packages:
(1/4): postgresql13-libs-13.3-2PGDG.rhel8.x86_64.rpm 69 kB/s | 413 kB 00:06
(2/4): postgresql13-13.3-2PGDG.rhel8.x86_64.rpm 92 kB/s | 1.5 MB 00:16
(3/4): postgresql13-server-13.3-2PGDG.rhel8.x86_64.rpm 158 kB/s | 5.5 MB 00:35
(4/4): libicu-60.3-2.el8_1.x86_64.rpm 190 kB/s | 8.8 MB 00:47
------------------------------------------------------------------------------------------------------------------------------------------------------
Total 345 kB/s | 16 MB 00:48
warning: /var/cache/dnf/pgdg13-e81daebfc8b779ec/packages/postgresql13-13.3-2PGDG.rhel8.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 442df0f8: NOKEY
PostgreSQL 13 for RHEL/CentOS 8 - x86_64 1.6 MB/s | 1.7 kB 00:00
Importing GPG key 0x442DF0F8:
Userid : "PostgreSQL RPM Building Project <[email protected]>"
Fingerprint: 68C9 E2B9 1A37 D136 FE74 D176 1F16 D2E1 442D F0F8
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : postgresql13-libs-13.3-2PGDG.rhel8.x86_64 1/4
Running scriptlet: postgresql13-libs-13.3-2PGDG.rhel8.x86_64 1/4
Installing : libicu-60.3-2.el8_1.x86_64 2/4
Running scriptlet: libicu-60.3-2.el8_1.x86_64 2/4
Installing : postgresql13-13.3-2PGDG.rhel8.x86_64 3/4
Running scriptlet: postgresql13-13.3-2PGDG.rhel8.x86_64 3/4
Running scriptlet: postgresql13-server-13.3-2PGDG.rhel8.x86_64 4/4
Installing : postgresql13-server-13.3-2PGDG.rhel8.x86_64 4/4
Running scriptlet: postgresql13-server-13.3-2PGDG.rhel8.x86_64 4/4
Verifying : libicu-60.3-2.el8_1.x86_64 1/4
Verifying : postgresql13-13.3-2PGDG.rhel8.x86_64 2/4
Verifying : postgresql13-libs-13.3-2PGDG.rhel8.x86_64 3/4
Verifying : postgresql13-server-13.3-2PGDG.rhel8.x86_64 4/4
Installed:
libicu-60.3-2.el8_1.x86_64 postgresql13-13.3-2PGDG.rhel8.x86_64 postgresql13-libs-13.3-2PGDG.rhel8.x86_64
postgresql13-server-13.3-2PGDG.rhel8.x86_64
Complete!
[root@unixcop ~]#
Sie müssen den folgenden Befehl einmal ausführen, um die Postgres-Datenbank zu initialisieren.
[root@unixcop ~]# /usr/pgsql-13/bin/postgresql-13-setup initdb
Initializing database ... OK
[root@unixcop ~]#
Aktivieren, starten und prüfen Sie mit diesen Befehlen auch den Status der Postgres-Datenbank.
[root@unixcop ~]# systemctl start postgresql-13
[root@unixcop ~]# systemctl enable postgresql-13
Created symlink /etc/systemd/system/multi-user.target.wants/postgresql-13.service → /usr/lib/systemd/system/postgresql-13.service.
[root@unixcop ~]# systemctl status postgresql-13
● postgresql-13.service - PostgreSQL 13 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-13.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2021-08-09 08:21:20 EDT; 21s ago
Docs: https://www.postgresql.org/docs/13/static/
Main PID: 2178 (postmaster)
Tasks: 8 (limit: 11426)
Memory: 16.8M
CGroup: /system.slice/postgresql-13.service
├─2178 /usr/pgsql-13/bin/postmaster -D /var/lib/pgsql/13/data/
├─2179 postgres: logger
├─2181 postgres: checkpointer
├─2182 postgres: background writer
├─2183 postgres: walwriter
├─2184 postgres: autovacuum launcher
├─2185 postgres: stats collector
└─2186 postgres: logical replication launcher
Aug 09 08:21:20 unixcop systemd[1]: Starting PostgreSQL 13 database server...
Aug 09 08:21:20 unixcop postmaster[2178]: 2021-08-09 08:21:20.237 EDT [2178] LOG: redirecting log output to logging collector process
Aug 09 08:21:20 unixcop postmaster[2178]: 2021-08-09 08:21:20.237 EDT [2178] HINT: Future log output will appear in directory "log".
Aug 09 08:21:20 unixcop systemd[1]: Started PostgreSQL 13 database server.
[root@unixcop ~]# systemctl is-enabled postgresql-13
enabled
[root@unixcop ~]#
Überprüfen Sie auch die Version des installierten PostgreSQL .
[root@unixcop ~]# psql -V
psql (PostgreSQL) 13.3
[root@unixcop ~]#
Wechseln Sie zu postgres user und verbinden Sie sich mit psql Shell, um das Admin-Benutzerpasswort festzulegen.
[root@unixcop ~]# su - postgres
[postgres@unixcop ~]$ psql
psql (13.3)
Type "help" for help.
postgres=# ALTER USER postgres WITH PASSWORD 'unixcop';
ALTER ROLE
postgres=# \q
[postgres@unixcop ~]$ exit
logout
[root@unixcop ~]#
Konfigurieren Sie den Netzwerkzugriff für den Postgres-Datenbankdienst
Möglicherweise stellen Sie fest, dass der PostgreSQL-Dienst zunächst nur auf der Localhost-Schnittstelle ausgeführt wird.
Sie müssen also die PostgreSQL-Konfigurationsdatei in vim bearbeiten Texteditor.
# vi /var/lib/pgsql/13/data/postgresql.conf
Suchen Sie darin nach folgender Richtlinie.
# listen_addresses = 'localhost'
Und ersetzen Sie es durch die folgende Direktive.
listen_addresses = '*'
Ihr Postgres-Datenbankdienst ist jetzt so konfiguriert, dass er auf allen Netzwerkschnittstellen lauscht.
Erlauben Sie Netzwerk-Clients den Zugriff auf den PostgreSQL-Dienst in pg_hba.conf Datei.
# echo "host all all 192.168.13.0/24 md5" >> /var/lib/pgsql/13/data/pg_hba.conf
Starten Sie den Postgres-Datenbankdienst neu, um die Änderungen zu übernehmen.
# systemctl restart postgresql-13.service
Der Postgres-Dienst läuft jetzt auf allen Netzwerkschnittstellen.
Konfigurieren Sie die Linux-Firewall für die Postgres-Datenbank
Wir werden den Postgre-Dienst mit dem Befehl firewall-cmd zulassen.
[root@unixcop ~]# firewall-cmd --permanent --add-service=postgresql
success
[root@unixcop ~]# firewall-cmd --reload
success
[root@unixcop ~]#
Der Postgres-Datenbankserver wurde also auf dem Linux-Server installiert.
Installation des pgAdmin Yum-Repositorys auf CentOS 8
pgAdmin ist ein beliebtes Webinterface zur Datenbankverwaltung von PostgreSQL-Datenbanken.
Obwohl pgAdmin auch in den offiziellen Yum-Repositories von PostgreSQL enthalten ist. Aber es funktioniert nicht auf unserem CentOS 8-Server.
Daher werden wir die neueste stabile Version von pgAdmin installieren aus dem offiziellen Yum-Repository von pgAdmin.
Da wir dieses yum-Repository hinzufügen werden, müssen Sie zuerst die PostgreSQL-yum-Repositorys von Ihrem Linux-Server entfernen.
# dnf remove -y pgdg-redhat-repo
Fügen Sie das offizielle yum-Repository von pgAdmin in Ihrem Linux-Betriebssystem mit dem Befehl hinzu:
[root@unixcop ~]# dnf install -y https://ftp.postgresql.org/pub/pgadmin/pgadmin4/yum/pgadmin4-redhat-repo-1-1.noarch.rpm
Last metadata expiration check: 1 day, 0:04:44 ago on Sun Aug 8 10:39:31 2021.
pgadmin4-redhat-repo-1-1.noarch.rpm 5.6 kB/s | 6.6 kB 00:01
Dependencies resolved.
======================================================================================================================================================
Package Architecture Version Repository Size
======================================================================================================================================================
Installing:
pgadmin4-redhat-repo noarch 1-1 @commandline 6.6 k
Transaction Summary
======================================================================================================================================================
Install 1 Package
Total size: 6.6 k
Installed size: 4.0 k
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : pgadmin4-redhat-repo-1-1.noarch 1/1
Verifying : pgadmin4-redhat-repo-1-1.noarch 1/1
Installed:
pgadmin4-redhat-repo-1-1.noarch
Complete!
[root@unixcop ~]#
Außerdem erfordert pgAdmin einige Softwarepakete, die in den Standard-yum-Repositories nicht verfügbar sind.
Verwenden Sie den Befehl dnf und installieren Sie das EPEL yum-Repository.
# dnf install -y epel-release
Erstellen Sie den Cache für neu installierte Yum-Repositories mit dem Befehl:
[root@unixcop ~]# dnf makecache
CentOS Linux 8 - AppStream 2.6 kB/s | 4.3 kB 00:01
CentOS Linux 8 - BaseOS 5.4 kB/s | 3.9 kB 00:00
CentOS Linux 8 - Extras 2.8 kB/s | 1.5 kB 00:00
Extra Packages for Enterprise Linux Modular 8 - x86_64 21 kB/s | 36 kB 00:01
Extra Packages for Enterprise Linux 8 - x86_64 22 kB/s | 33 kB 00:01
pgadmin4 704 B/s | 833 B 00:01
pgadmin4 3.8 MB/s | 3.8 kB 00:00
Importing GPG key 0x210976F2:
Userid : "Package Manager (Package Signing Key) <[email protected]>"
Fingerprint: E869 7E2E EF76 C02D 3A63 3277 8881 B2A8 2109 76F2
From : /etc/pki/rpm-gpg/PGADMIN_PKG_KEY
Is this ok [y/N]: y
pgadmin4 117 kB/s | 441 kB 00:03
Metadata cache created.
Installieren der pgAdmin-Webbenutzeroberfläche
Sie können jetzt pgAdmin installieren, indem Sie :
verwenden# dnf install -y pgadmin4
WICHTIGER HINWEIS:
Um SELinux-Richtlinien zu konfigurieren, erfordert das pgAdmin-Setup-Skript semanage Befehl, der in policycoreutils-python-utils-Paketen. bereitgestellt wird Daher sollten Sie es installieren, bevor Sie das pgAdmin-Setup-Skript ausführen.
Sie können auch diesen Link besuchen, um dieses Problem korrekt zu beheben. So beheben Sie den Fehler „semanage command“ Not Found in CentOS
# dnf install -y policycoreutils-python-utils
Die pgAdmin-Software wird mit einem gut geschriebenen Konfigurationsskript geliefert, um den pgAdmin-Webdienst zu konfigurieren. Führen Sie es aus, um einen Administratorbenutzer und einen Apache-Webserver zu erstellen, um den pgAdmin-Webdienst bereitzustellen.
[root@unixcop ~]# /usr/pgadmin4/bin/setup-web.sh
Setting up pgAdmin 4 in web mode on a Redhat based platform...
Creating configuration database...
NOTE: Configuring authentication for SERVER mode.
Enter the email address and password to use for the initial pgAdmin user account:
Email address: [email protected]
Password:
Retype password:
pgAdmin 4 - Application Initialisation
======================================
Creating storage and log directories...
Configuring SELinux...
The Apache web server is not running. We can enable and start the web server for you to finish pgAdmin 4 installation. Continue (y/n)? y
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
Apache successfully enabled.
Apache successfully started.
You can now start using pgAdmin 4 in web mode at http://127.0.0.1/pgadmin4
[root@unixcop ~]#
Starten, aktivieren und prüfen Sie den Status des httpd-Dienstes.
[root@unixcop ~]# systemctl start httpd
[root@unixcop ~]# systemctl enable httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
[root@unixcop ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2021-08-09 08:48:49 EDT; 16s ago
Docs: man:httpd.service(8)
Main PID: 3881 (httpd)
Status: "Running, listening on: port 80"
Tasks: 241 (limit: 11426)
Memory: 44.2M
CGroup: /system.slice/httpd.service
├─3881 /usr/sbin/httpd -DFOREGROUND
├─3882 /usr/sbin/httpd -DFOREGROUND
├─3883 /usr/sbin/httpd -DFOREGROUND
├─3884 /usr/sbin/httpd -DFOREGROUND
├─3885 /usr/sbin/httpd -DFOREGROUND
└─3886 /usr/sbin/httpd -DFOREGROUND
Aug 09 08:48:47 unixcop systemd[1]: Starting The Apache HTTP Server...
Aug 09 08:48:47 unixcop httpd[3881]: [Mon Aug 09 08:48:47.749981 2021] [so:warn] [pid 3881:tid 140142522952000] AH01574: module wsgi_module is alread>
Aug 09 08:48:49 unixcop httpd[3881]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::20c:29ff:feca>
Aug 09 08:48:49 unixcop systemd[1]: Started The Apache HTTP Server.
Aug 09 08:48:52 unixcop httpd[3881]: Server configured, listening on: port 80
lines 1-21/21 (END)
Konfigurieren Sie die Linux-Firewall, um eingehenden Datenverkehr zum Apache-Webserver zuzulassen
[root@unixcop ~]# firewall-cmd --permanent --add-service=http
success
[root@unixcop ~]# firewall-cmd --reload
success
[root@unixcop ~]#
Öffnen Sie die URL http://Ihre_IP-Adresse/pgadmin4/ in einem Webbrowser.
Melden Sie sich bei pgAdmin als Admin-Benutzer an, den wir von setup-web.sh erstellt haben Skript.
Um Ihren PostgreSQL-Datenbankserver zum pgAdmin-Inventar hinzuzufügen, klicken Sie auf „Neuen Server hinzufügen“.
Geben Sie den Servernamen ein und klicken Sie auf „Verbindung“ Registerkarte.
Geben Sie die Datenbankverbindungsinformationen in diesem von Ihnen erstellten Dialogfeld ein.
Klicken Sie dann auf „Speichern“.
Unser Postgres-Datenbankserver wurde in pgAdmin hinzugefügt. Sie können einen Baum Ihres Datenbankservers im linken Seitenbereich sehen.
Schlussfolgerung
In diesem Tutorial haben Sie gelernt, wie Sie PostgreSQL mit pgAdmin auf einem CentOS 8-Server installieren.