Postgresql ist ein objektrelationales Open-Source-Datenbanksystem mit über 30 Jahren aktiver Entwicklung, das ihm einen guten Ruf für Zuverlässigkeit, Funktionsrobustheit und Leistung eingebracht hat. Postgres ist ein kostenloses und quelloffenes Verwaltungssystem für relationale Datenbanken, das auf Erweiterbarkeit und SQL-Konformität Wert legt. Es hieß ursprünglich POSTGRES und bezog sich auf seinen Ursprung als Nachfolger der Ingres-Datenbank, die an der University of California, Berkeley, entwickelt wurde. PostgreSQL wird als primärer Datenspeicher oder Data Warehouse für viele Web-, Mobil-, Geodaten- und Analyseanwendungen verwendet. PostgreSQL kann strukturierte und unstrukturierte Daten in einem einzigen Produkt speichern.
Prüfen Sie auch diese:
- So installieren und konfigurieren Sie Postgres 14 unter FreeBSD 13
- Postgres-Berechtigungen – Datenbankbenutzer erstellen, aktualisieren, löschen
- So installieren und konfigurieren Sie Postgres 13 auf Centos 8
- Postgresql 14 mit Docker und Docker-Compose ausführen
- So installieren und konfigurieren Sie Postgres 13 Ubuntu 20.04
- So installieren und konfigurieren Sie Postgres 14 auf Debian 11
- So installieren und konfigurieren Sie Postgres 14 Ubuntu 20.04
- So installieren und konfigurieren Sie Postgres 14 auf Fedora 34
- So installieren und konfigurieren Sie Postgres 14 auf OpenSUSE Leap 15.3
Voraussetzungen
Um mitzumachen, stellen Sie sicher, dass Sie über Folgendes verfügen:
- Rocky Linux/Alma Linux/Centos 8- oder RHEL 8-basierter Server
- Root-Zugriff auf den Server oder Benutzer mit Root-Zugriff
- Internetzugang vom Server
- Grundkenntnisse des Linux-Terminals
Inhaltsverzeichnis
- Stellen Sie sicher, dass der Server auf dem neuesten Stand ist
- Postgres-Server installieren und starten
- Authentifizierungsmethoden für PostgreSQL-Rollen und -Datenbanken
- Verbindung zur Postgres-Datenbank herstellen
- Postgres 14-Instanz für Fernzugriff konfigurieren
- Benutzerverwaltung
1. Stellen Sie sicher, dass der Server auf dem neuesten Stand ist
Bevor wir fortfahren, stellen wir sicher, dass unser Server über aktuelle Pakete verfügt. Verwenden Sie diesen Befehl:
$ sudo dnf -y update
Last metadata expiration check: 2:52:07 ago on Wed 06 Oct 2021 01:26:21 AM UTC.
Dependencies resolved.
Nothing to do.
Complete!
2. Postgres-Server installieren und starten
Standardmäßig ist für das Postgres-Modul eine ältere Version von Postgres aktiviert. Aber das aktuelle Modul enthält kein postgresql 14. Bestätigen Sie mit diesem Befehl:
$ sudo dnf module list postgresql
Last metadata expiration check: 2:52:36 ago on Wed 06 Oct 2021 01:26:21 AM UTC.
CentOS Linux 8 - AppStream
Name Stream Profiles Summary
postgresql 9.6 client, server [d] PostgreSQL server and client module
postgresql 10 [d] client, server [d] PostgreSQL server and client module
postgresql 12 client, server [d] PostgreSQL server and client module
postgresql 13 client, server [d] PostgreSQL server and client module
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Bei der Installation aus den Modulen wird eine ältere Version von Postgres (10) installiert, aber das ist nicht das, was wir wollen.
Wir werden das vom Postgres-Team bereitgestellte Repo verwenden, um Repositories für Postgres 14 einzurichten, und dann das Paket installieren.
Lassen Sie uns das Repository-RPM mit diesem Befehl installieren:
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Um Konflikte zu vermeiden, deaktivieren wir dann das integrierte PostgreSQL-Modul:
sudo dnf -qy module disable postgresql
Installieren Sie abschließend den PostgreSQL 14-Server:
sudo dnf install -y postgresql14-server
Lassen Sie uns auch das Contrib-Paket installieren, das mehrere zusätzliche Funktionen für das PostgreSQL-Datenbanksystem bereitstellt:
sudo dnf install -y postgresql14-contrib
Initialisieren Sie nach Abschluss der Installation die PostgreSQL-Datenbank mit dem folgenden Befehl:
$ sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
Initializing database ... OK
Starten Sie den Postgres-Dienst mit diesem Befehl:
sudo systemctl start postgresql-14
Aktivieren Sie dann den Dienst, damit er beim Neustart des Servers gestartet wird.
$ sudo systemctl enable postgresql-14
Created symlink /etc/systemd/system/multi-user.target.wants/postgresql-14.service → /usr/lib/systemd/system/postgresql-14.service.
Bestätigen Sie, dass Postgres ausgeführt wird:
$ sudo systemctl status postgresql-14
● postgresql-14.service - PostgreSQL 14 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-14.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2021-10-06 04:26:52 UTC; 33s ago
Docs: https://www.postgresql.org/docs/14/static/
Process: 1018631 ExecStartPre=/usr/pgsql-14/bin/postgresql-14-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
Main PID: 1018637 (postmaster)
Tasks: 8 (limit: 23800)
Memory: 17.2M
CGroup: /system.slice/postgresql-14.service
├─1018637 /usr/pgsql-14/bin/postmaster -D /var/lib/pgsql/14/data/
├─1018638 postgres: logger
├─1018640 postgres: checkpointer
├─1018641 postgres: background writer
├─1018642 postgres: walwriter
├─1018643 postgres: autovacuum launcher
├─1018644 postgres: stats collector
└─1018645 postgres: logical replication launcher
Oct 06 04:26:52 test-db-server systemd[1]: Starting PostgreSQL 14 database server...
Oct 06 04:26:52 test-db-server postmaster[1018637]: 2021-10-06 04:26:52.204 UTC [1018637] LOG: redirecting log output to logging collector process
Oct 06 04:26:52 test-db-server postmaster[1018637]: 2021-10-06 04:26:52.204 UTC [1018637] HINT: Future log output will appear in directory "log".
Oct 06 04:26:52 test-db-server systemd[1]: Started PostgreSQL 14 database server.
Der Active: active (running)
zeigt an, dass der Dienst aktiv ist.
Als Nächstes überprüfen wir, ob die Installation erfolgreich war, indem wir eine Verbindung zum PostgreSQL-Datenbankserver herstellen und seine Version drucken:
sudo -u postgres psql -c "SELECT version();"
Ausgabe:
$ sudo -u postgres psql -c "SELECT version();"
version
--------------------------------------------------------------------------------------------------------
PostgreSQL 14.0 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.4.1 20200928 (Red Hat 8.4.1-1), 64-bit
(1 row)
3. Authentifizierungsmethoden für PostgreSQL-Rollen und -Datenbanken
PostgreSQL verwendet ein Konzept namens roles
um die Client-Authentifizierung und -Autorisierung zu handhaben. Postgres ist standardmäßig so eingerichtet, dass es die ident authentication
verwendet , was bedeutet, dass es Postgres-Rollen mit einem übereinstimmenden Unix/Linux-Systemkonto verknüpft. Wenn eine Rolle in Postgres existiert, kann sich ein Unix/Linux-Benutzername mit demselben Namen als diese Rolle anmelden.
Beim Installationsvorgang wurde ein Benutzerkonto mit dem Namen postgres
erstellt das mit dem standardmäßigen postgres
verknüpft ist Rolle. Um PostgreSQL zu verwenden, können Sie sich bei diesem Konto anmelden.
PostgreSQL unterstützt mehrere Authentifizierungsmethoden. Die am häufigsten verwendeten Methoden sind:
Trust
– Eine Rolle kann sich ohne Passwort verbinden, solange die in derpg_hba.conf
definierten Bedingungen erfüllt sind erfüllt sind.Password
– Eine Rolle kann sich verbinden, indem sie ein Passwort angibt. Die Passwörter können alsscram-sha-256
gespeichert werden ,md5
, undPassword
(clear-text
).Ident
– Wird nur bei TCP/IP-Verbindungen unterstützt. Es funktioniert, indem es den Benutzernamen des Betriebssystems des Clients erhält, mit einer optionalen Benutzernamenzuordnung.Peer
– Dasselbe wie Ident, wird aber nur auf lokalen Verbindungen unterstützt.
4. Verbindung zur Postgres-Datenbank herstellen
- Durch Wechsel zu
postres
Benutzer
Wechseln Sie zum postgres-Konto auf Ihrem Server, indem Sie Folgendes in das Terminal eingeben;:
sudo -i -u postgres
Sie können jetzt sofort auf eine Postgres-Eingabeaufforderung zugreifen, indem Sie Folgendes eingeben:
$ psql
psql (14.0)
Type "help" for help.
postgres=#
Dadurch werden Sie bei der PostgreSQL-Eingabeaufforderung angemeldet, und von hier aus können Sie sofort mit dem Datenbankverwaltungssystem interagieren.
2. Durch Ausführen des Befehls als postgres
Benutzer
Verwenden Sie dies, um den Befehl direkt als postgres
auszuführen Benutzer mit sudo
sudo -u postgres psql
Ausgabe:
$ sudo -u postgres psql
psql (14.0)
Type "help" for help.
postgres=#
5. Postgres 14-Instanz für Fernzugriff konfigurieren
Um dies zu erreichen, werden wir Postgres-Konfigurationsdateien ändern. Wir müssen die Dateien öffnen und die erforderlichen Konfigurationen anpassen. Die Hauptkonfigurationsdatei für Postgresql 14 finden Sie in diesem Pfad /var/lib/pgsql/14/data/pg_hba.conf
Ändern wir die Peer-Identifikation in Trust:
sed -i '/^local/s/peer/trust/' /var/lib/pgsql/14/data/pg_hba.conf
Ändern Sie die Ident-Identifikation in md5, um die Anmeldung mit Passwort zu ermöglichen.
sed -i '/^host/s/ident/md5/' /var/lib/pgsql/14/data/pg_hba.conf
Fügen Sie einen Block hinzu, um den Zugriff von überall zu ermöglichen:
Fügen Sie diesen Inhalt der Datei /var/lib/pgsql/14/data/pg_hba.conf
hinzu
host all all 0.0.0.0/0 md5
Stellen Sie sicher, dass PostgreSQL auf *
lauscht
Fügen Sie diese Zeile hier zur Konfiguration hinzu /var/lib/pgsql/14/data/postgresql.conf
listen_addresses='*'
Postgresql-Server aktivieren und neu starten, um die Konfigurationen neu zu laden
sudo systemctl restart postgresql
sudo systemctl enable postgresql
6. Benutzerverwaltung
Superuser erstellen
Nachdem alles eingerichtet ist, erstellen wir einen Superuser.
Verbinden Sie sich mit der DB als postres-Rolle:
$ sudo -u postgres psql
psql (14.0)
Type "help" for help.
postgres=#
Erstellen Sie einen Superuser mit dem Namen root
:
CREATE ROLE root WITH LOGIN SUPERUSER CREATEDB CREATEROLE PASSWORD 'passwordhere';
Ausgabe:
postgres=# CREATE ROLE root WITH LOGIN SUPERUSER CREATEDB CREATEROLE PASSWORD 'passwordhere';
CREATE ROLE
postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
root | Superuser, Create role, Create DB | {}
postgres=#
Anwendungsbenutzer verwalten
Verwenden Sie dies, um eine Datenbank zu erstellen, erstellen Sie einen Benutzer und gewähren Sie diesem Benutzer alle Zugriffe auf diese Datenbank:
create database app_db_name;
create user app_user with encrypted password 'dbpassword';
grant all privileges on database app_db_name to app_user;
Sehen Sie sich diese umfassende Anleitung zur Benutzer- und Berechtigungsverwaltung in Postgres hier an.
Verbindung zur Instanz vom Remote-Host herstellen
Verwenden Sie diesen Befehl, um vom lokalen Computer aus eine Verbindung zur Postgres-Instanz herzustellen:
psql 'postgres://<username>:<password>@<host>:<port>/<db>?sslmode=disable'
# like
psql 'postgres://root:[email protected]:5432/postgres?sslmode=disable'
Schlussfolgerung
Bis zu diesem Punkt haben wir es geschafft, Postgresql 14 auf einem Ceentos 8-Server zu installieren, einige grundlegende Konfigurationen vorzunehmen und dann die grundlegende Benutzerverwaltung durchzuführen.