PostgreSQL oder Postgres ist ein universelles objektrelationales Open-Source-Datenbankverwaltungssystem mit vielen erweiterten Funktionen, mit denen Sie komplexe Webanwendungen erstellen können.
In diesem Tutorial zeigen wir Ihnen zwei verschiedene Methoden zur Installation von PostgreSQL auf Ihrem CentOS 7-Computer. Die erste Methode führt Sie durch die Schritte, die zum Installieren von PostgreSQL v9.2.23 aus den CentOS-Repositories erforderlich sind, während die zweite Ihnen zeigt, wie Sie die neueste Version von PostgreSQL aus den offiziellen PostgreSQL-Repositories installieren.
Wenn Ihre Anwendung nicht die neueste Version erfordert, empfehlen wir, die erste Methode zu verwenden und PostgreSQL aus den CentOS-Repositories zu installieren.
Wir werden auch die Grundlagen der PostgreSQL-Datenbankverwaltung untersuchen.
Voraussetzungen #
Bevor Sie mit diesem Tutorial fortfahren, vergewissern Sie sich, dass Sie als Benutzer mit sudo-Berechtigungen angemeldet sind.
Installieren Sie PostgreSQL aus den CentOS-Repositories #
Zum Zeitpunkt der Erstellung dieses Artikels war die neueste Version von PostgreSQL, die in den CentOS-Repositories verfügbar ist, PostgreSQL Version 9.2.23.
Führen Sie die folgenden Schritte aus, um PostgreSQL auf Ihrem CentOS-Server zu installieren:
-
PostgreSQL installieren
Um den PostgreSQL-Server zusammen mit dem PostgreSQL-Contrib-Paket zu installieren, das mehrere zusätzliche Funktionen für die PostgreSQL-Datenbank bereitstellt, geben Sie einfach Folgendes ein:
sudo yum install postgresql-server postgresql-contrib
-
Initialisieren der Datenbank
Initialisieren Sie die PostgreSQL-Datenbank mit dem folgenden Befehl:
sudo postgresql-setup initdb
Initializing database ... OK
-
PostgreSQL starten
Um den PostgreSQL-Dienst zu starten und zu aktivieren, dass er beim Booten startet, geben Sie einfach Folgendes ein:
sudo systemctl start postgresql
sudo systemctl enable postgresql
-
Überprüfung der PostgreSQL-Installation
Um die Installation zu überprüfen, versuchen wir, uns mit
psql
mit dem PostgreSQL-Datenbankserver zu verbinden Tool und drucken Sie die Serverversion aus:sudo -u postgres psql -c "SELECT version();"
PostgreSQL 9.2.23 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16), 64-bit (1 row)
Installieren Sie PostgreSQL aus den PostgreSQL-Repositories #
Zum Zeitpunkt der Erstellung dieses Artikels war die neueste Version von PostgreSQL, die in den offiziellen PostgreSQL-Repositories verfügbar ist, PostgreSQL Version 10.4. Bevor Sie mit dem nächsten Schritt fortfahren, sollten Sie die Seite PostgreSQL Yum Repository besuchen und prüfen, ob eine neue Version verfügbar ist.
Führen Sie die folgenden Schritte aus, um die neueste PostgreSQL-Version auf Ihrem CentOS-Server zu installieren:
-
PostgreSQL-Repository aktivieren
Um das PostgreSQL-Repository zu aktivieren, installieren Sie einfach das Repository
rpm
Datei:sudo yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm
-
PostgreSQL installieren
Sobald das Repository aktiviert ist, installieren Sie die PostgreSQL-Server- und PostgreSQL-Contrib-Pakete mit:
sudo yum install postgresql10-server postgresql10-contrib
-
Initialisieren der Datenbank
Um die PostgreSQL-Datenbank zu initialisieren, geben Sie Folgendes ein:
sudo /usr/pgsql-10/bin/postgresql-10-setup initdb
Initializing database ... OK
-
PostgreSQL starten
Um den PostgreSQL-Dienst zu starten und zu aktivieren, dass er beim Booten startet, geben Sie Folgendes ein:
sudo systemctl start postgresql-10
sudo systemctl enable postgresql-10
-
Überprüfung der PostgreSQL-Installation
Um die Installation zu überprüfen, versuchen wir, uns mit
psql
mit dem PostgreSQL-Datenbankserver zu verbinden Tool und drucken Sie die Serverversion aus:sudo -u postgres /usr/pgsql-10/bin/psql -c "SELECT version();"
PostgreSQL 10.4 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit (1 row)
PostgreSQL-Rollen und Authentifizierungsmethoden #
Datenbankzugriffsberechtigungen innerhalb von PostgreSQL werden mit dem Rollenkonzept gehandhabt. Eine Rolle kann einen Datenbankbenutzer oder eine Gruppe von Datenbankbenutzern darstellen.
PostgreSQL unterstützt mehrere Authentifizierungsmethoden. Die am häufigsten verwendeten Methoden sind:
- Vertrauen - Mit dieser Methode kann sich die Rolle ohne Passwort verbinden, solange die in der
pg_hba.conf
definierten Kriterien erfüllt werden erfüllt sind. - Passwort – Eine Rolle kann eine Verbindung herstellen, indem sie ein Passwort bereitstellt. Die Passwörter können als
scram-sha-256
gespeichert werdenmd5
undpassword
(Klartext). - Ident - Diese Methode 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 bei lokalen Verbindungen unterstützt.
Die PostgreSQL-Clientauthentifizierung wird in der Konfigurationsdatei mit dem Namen pg_hba.conf
definiert . Standardmäßig ist PostgreSQL für lokale Verbindungen auf die Verwendung der Peer-Authentifizierungsmethode eingestellt.
Das postgres
Benutzer wird automatisch erstellt, wenn Sie PostgreSQL installieren. Dieser Benutzer ist der Superuser für die PostgreSQL-Instanz und entspricht dem MySQL-Root-Benutzer.
Um sich beim PostgreSQL-Server als postgres-Benutzer anzumelden, müssen Sie zuerst zu userpostgres wechseln und dann mit psql
auf die PostgreSQL-Eingabeaufforderung zugreifen Dienstprogramm:
sudo su - postgres
psql
Von hier aus können Sie mit Ihrer PostgreSQL-Instanz interagieren. Um die PostgreSQL-Shell zu verlassen, geben Sie Folgendes ein:
\q
Sie können auch mit sudo
auf die PostgreSQL-Eingabeaufforderung zugreifen, ohne den Benutzer zu wechseln Befehl:
sudo -u postgres psql
Das postgres
Benutzer wird normalerweise nur vom lokalen Host verwendet und es wird empfohlen, das Passwort nicht für diesen Benutzer festzulegen.
psql
verwenden Binärdatei, die /usr/pgsql-10/bin/psql
ist . PostgreSQL-Rolle und -Datenbank erstellen #
Nur Superuser und Rollen mit CREATEROLE
Berechtigung kann neue Rollen erstellen.
Im folgenden Beispiel erstellen wir eine neue Rolle mit dem Namen john
eine Datenbank namens johndb
und Berechtigungen für die Datenbank erteilen.
-
Verbinden Sie sich mit der PostgreSQL-Shell
sudo -u postgres psql
-
Erstellen Sie eine neue PostgreSQL-Rolle
Der folgende Befehl erstellt eine neue Rolle mit dem Namen „john“:
CREATE ROLE john;
-
Erstellen Sie eine neue PostgreSQL-Datenbank
Erstellen Sie mithilfe von
createdb
eine neue Datenbank mit dem Namen „johndb“. Befehl:CREATE DATABASE johndb;
-
Berechtigungen erteilen
Um dem
john
Berechtigungen zu erteilen user in der Datenbank, die wir im vorherigen Schritt erstellt haben, führen Sie die folgende Abfrage aus:GRANT ALL PRIVILEGES ON DATABASE johndb TO john;
Aktivieren Sie den Fernzugriff auf den PostgreSQL-Server #
Standardmäßig lauscht der PostgreSQL-Server nur auf der lokalen Schnittstelle 127.0.0.1
. Um den Fernzugriff auf Ihren PostgreSQL-Server zu aktivieren, öffnen Sie die Konfigurationsdatei postgresql.conf
und fügen Sie listen_addresses = '*'
hinzu in CONNECTIONS AND AUTHENTICATION
Abschnitt.
sudo vim /var/lib/pgsql/data/postgresql.conf
Wenn Sie PostgreSQL Version 10 ausführen, lautet der Pfad zur Datei /var/lib/pgsql/10/data/postgresql.conf
./var/lib/pgsql/data/postgresql.conf#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
listen_addresses = '*' # what IP address(es) to listen on;
Speichern Sie die Datei und starten Sie den PostgreSQL-Dienst neu mit:
sudo systemctl restart postgresql
Wenn Sie PostgreSQL Version 10 ausführen, starten Sie den PostgreSQL-Dienst mit systemctl restart postgresql-10
neu .
Bestätigen Sie die Änderungen mit ss
Dienstprogramm:
ss -nlt | grep 5432
LISTEN 0 128 0.0.0.0:5432 0.0.0.0:*
LISTEN 0 128 [::]:5432 [::]:*
Wie Sie der obigen Ausgabe entnehmen können, lauscht der PostgreSQL-Server auf allen Schnittstellen (0.0.0.0).
Der letzte Schritt besteht darin, den Server so zu konfigurieren, dass er Remote-Verbindungen akzeptiert, indem Sie die pg_hba.conf
bearbeiten Datei.
Unten sind einige Beispiele, die verschiedene Anwendungsfälle zeigen:
/var/lib/pgsql/data/pg_hba.conf# TYPE DATABASE USER ADDRESS METHOD
# The user jane will be able to access all databases from all locations using a md5 password
host all jane 0.0.0.0/0 md5
# The user jane will be able to access only the janedb from all locations using a md5 password
host janedb jane 0.0.0.0/0 md5
# The user jane will be able to access all databases from a trusted location (192.168.1.134) without a password
host all jane 192.168.1.134 trust
Wenn Sie PostgreSQL Version 10 ausführen, lautet der vollständige Pfad zur Datei /var/lib/pgsql/10/data/pg_hba.conf
.