Die Erstkonfiguration ist nach der Installation von PostgreSQL auf CentOS und vor dem Start erforderlich.


Datum der Veröffentlichung:17. Dezember 2020.



INFOMARTION > Die Erstkonfiguration ist nach der Installation von PostgreSQL auf CentOS und vor dem Start erforderlich.

Überblick.

Dies ist die anfängliche Konfigurationsprozedur, die für die Installation und den Start von PostgreSQL unter CentOS erforderlich ist. Die Informationen basieren auf der Annahme, dass CentOS7 verwendet wird. Der Abschnitt über Sicherheit ist ebenfalls enthalten.

PostgreSQL wird empfohlen, da es kostenlos und hochfunktional ist. Ich habe gehört, dass die PostgreSQL-Funktionen früher langsam waren, aber in letzter Zeit wurden sie verbessert und sind nun schneller.

Die Versionen sind wie folgt.

CentOS-Version7.6 (1810)
Version von PostgreSQL9.2.24

Inhaltsübersicht

  1. installieren
  2. Details zur Einrichtung
  3. Zusammenfassung

1. installieren

Dieser Abschnitt beschreibt das Verfahren zur Installation von PostgreSQL.

1-1. Installieren von PostgreSQL

Führen Sie die PostgreSQL-Installation mit dem Befehl yum durch. Führen Sie die Arbeiten als root-Benutzer durch.

[username@hostname ~]$ su -
[root@hostname ~]# yum -y install postgresql-server

2. Details zur Einrichtung

Dieser Abschnitt beschreibt die Konfiguration bis zum Start von PostgreSQL.

2-1. Erstellen Sie einen eigenen PostgreSQL-Benutzer.

Ich wollte einen eigenen Benutzer erstellen, um PostgreSQL zu manipulieren (psql-Befehle verwenden), aber der Benutzer war bereits erstellt worden. Ich erinnere mich daran, dass ich in der Vergangenheit Benutzer angelegt habe, vielleicht hat sich die Spezifikation geändert.

Versuchen Sie, mit dem folgenden Befehl zu einem anderen Benutzer zu wechseln.

[root@hostname ~]# su - postgres

Da einige Leute möglicherweise eine ältere Version von PostgreSQL verwenden, sollte erwähnt werden, dass das Verfahren zum Setzen von Umgebungsvariablen durch Ändern der folgenden ".bashrc" nicht mehr notwendig ist.

.bashrc


export PGHOME=/var/lib/pgsql
export PGDATA=/var/lib/pgsql/data
export PGHOST=localhost

Das Standard-PGDATA für Postgres-Benutzer scheint jetzt '/var/lib/pgsql/data' zu sein. Es wird beschrieben, dass es sich auf "/usr/lib/systemd/system/postgresql.service" bezieht.

2-2. PostgreSQL-Datenaufbereitung

Erstellen Sie PostgreSQL-Daten. Die Kodierung ist UNICODE. Das Verzeichnis "/var/lib/pgsql/data" wurde standardmäßig erstellt, aber wer dies nicht getan hat, wird ebenfalls aufgefordert, einen Ordner zu erstellen.

-bash-4.2$ initdb --encoding=UNICODE

Da "PGDATA=/var/lib/pgsql/data" in "/usr/lib/systemd/system/postgresql.service" gesetzt ist, wird "initdb --encoding=UNICODE" eine DB unter "/var/lib/pgsql/ data/", die DB wird unter "/var/lib/pgsql/data/" erstellt.

2-3. Ändern der Konfigurationsdatei

IP-Adressen für den Zugriff auf PostgreSQL zulassen. Richten Sie das System so ein, dass es für den nicht-lokalen Zugriff passwort-authentifiziert ist.

[root@hostname ~]# vi /var/lib/pgsql/data/postgresql.conf

Ändern Sie 'postgresql.conf' wie folgt.

postgresql.conf【Vor der Änderung】


#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

#listen_addresses = 'localhost'         # what IP address(es) to listen on;

postgresql.conf【nach der Änderung】


#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

listen_addresses = '*'         # what IP address(es) to listen on;

Wenn Sie diese Einstellung vornehmen, können Sie von jeder IP-Adresse aus auf die Website zugreifen, da dies ein wichtiger Teil der Sicherheit ist. Wenn die IP, auf die zugegriffen werden soll, fest ist, geben Sie bitte die feste IP an.

Diese Einstellung ist notwendig, wenn Sie sich von einem anderen Server als dem, auf dem PostgreSQL installiert ist, anmelden, z.B. pgadmin. Diese Einstellung ist nicht erforderlich, wenn Sie sich am Server anmelden und den Befehl psql ausführen. (da die Verbindung von ihm selbst (localhost) ausgeht)

Dies ist eine wichtige Sicherheitseinstellung, daher sollten Sie die Anzahl der Benutzer, die darauf zugreifen können, so weit wie möglich einschränken.

Ändern Sie dann 'pg_hba.conf'.

[root@hostname ~]# vi /var/lib/pgsql/data/pg_hba.conf

Fügen Sie die folgenden Informationen am Ende des Dokuments hinzu.

pg_hba.conf


#Passwort-Authentifizierung von außen.
host    all             all             0.0.0.0/0            md5

Mit dieser Einstellung wird bei der Verbindung von außen ein Passwort verlangt. Diese Bereiche können schwerwiegende Sicherheitslücken darstellen, wenn sie nicht oder falsch eingerichtet sind, also richten Sie sie bitte mit größter Sorgfalt ein.

2-4. Bootstrap-Check

Nachdem die Vorkonfiguration abgeschlossen ist, überprüfen Sie, ob PostgreSQL startet. Da die DB unter einem postgres-Benutzer erstellt wurde, wechseln Sie vor dem Start zum postgres-Benutzer.

[root@hostname ~]# su - postgres
-bash-4.2$ pg_ctl start

Nachdem PostgreSQL erfolgreich gestartet wurde, überprüfen Sie, ob der Befehl psql ohne Probleme funktioniert. Führen Sie den Befehl psql als Postgres-Benutzer aus.

-bash-4.2$ psql -l
                                         Database List
   Name    |  Owner   | Encoding         |  Collation Order   | Ctype(conversion operator) |      Access rights
-----------+----------+------------------+--------------------+----------------------------+-----------------------
 postgres  | postgres | UTF8             | ja_JP.UTF-8        | ja_JP.UTF-8                |
 template0 | postgres | UTF8             | ja_JP.UTF-8        | ja_JP.UTF-8                | =c/postgres          +
           |          |                  |                    |                            | postgres=CTc/postgres
 template1 | postgres | UTF8             | ja_JP.UTF-8        | ja_JP.UTF-8                | =c/postgres          +
           |          |                  |                    |                            | postgres=CTc/postgres
(3 lines)

Es ist in Ordnung, wenn die oben genannten Ergebnisse zurückgegeben werden.

2-5. Einstellung der automatischen Inbetriebnahme

Obwohl es nicht zwingend erforderlich ist, ist es schwierig, PostgreSQL jedes Mal zu starten, wenn der Server neu gestartet wird. Daher ist es so konfiguriert, dass PostgreSQL automatisch startet, wenn der Server gestartet wird. Er registriert sich auch bei dem Befehl systemctl. Bitte beachten Sie, dass dieses Verfahren für CentOS7 gilt. Wenn Sie also ein anderes Betriebssystem als CentOS7 verwenden, müssen Sie den Befehl Service verwenden, um dieses Problem zu lösen.

Überprüfen Sie, ob '/usr/lib/systemd/system/postgresql.service' existiert. Wenn nicht, erstellen Sie "postgresql.service" mit dem folgenden Verfahren. Als Root-Benutzer ausführen.

[root@hostname ~]# touch /etc/systemd/system/postgresql.service
[root@hostname ~]# vi /etc/systemd/system/postgresql.service

Die folgenden Informationen werden bereitgestellt.

postgresql.service


[Unit]
#Beschreibung.
Description=PostgreSQL
#Kontrolle vor und nach der Ausführung.
#Before=xxx.service
After=network.target

[Service]
#Benutzer- und Gruppenbezeichnung
User=postgres
Group=postgres
#Nach der Aktivierung setzen Sie den Status auf Aktiviert.
Type=oneshot
RemainAfterExit=yes
#Starten, stoppen und neu laden.
Environment=PGDATA=/var/lib/pgsql/data
ExecStart=/usr/bin/pg_ctl start -D /var/lib/pgsql/data
ExecStop=/usr/bin/pg_ctl stop
ExecReload=/usr/bin/pg_ctl reload

[Install]
#Runlevel 3 entsprechende Einstellungen.
WantedBy=multi-user.target

Als nächstes registrieren Sie sich mit dem Befehl systemctl.

[root@hostname ~]# systemctl enable postgresql
[root@hostname ~]# systemctl is-enabled postgresql
enabled
[root@hostname ~]# systemctl list-unit-files --type=service | grep postgresql
postgresql.service                                enabled
[root@hostname ~]# systemctl daemon-reload

2-6. Hinzufügen eines administrativen Benutzers zu PostgreSQL

Erstellen Sie einen Benutzer, der innerhalb der PostgreSQL-Anwendung verwendet wird, getrennt von dem Benutzer, der PostgreSQL von Linux aus bedient. Dies ist der Benutzer, der mit pgadmin usw. arbeitet. Ich möchte das Passwort des Postgres-Benutzers, der standardmäßig existiert, ändern und ihn verwenden.

Führen Sie den folgenden Befehl als postgres-Benutzer aus.

-bash-4.2$ psql
postgres=# alter role postgres with password '(Computer-)Passwort';
postgres=# \q

※Geben Sie das gewünschte Passwort in das Feld "Passwort" ein.

2-7. Bohren von Brandmauern

Erlauben Sie den Zugriff auf den PostgreSQL-Port, da die Firewall (iptables für CentOS6 und früher) unter CentOS7 standardmäßig nur ssh-Zugriff erlaubt. Fügen Sie auch die Option "permanent" hinzu, um die Konfiguration dauerhaft zu machen.

[root@hostname ~]# firewall-cmd --permanent --zone=public --add-port=5432/tcp
[root@hostname ~]# firewall-cmd --reload
[root@hostname ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client http https ssh
  ports: 8080/tcp 5432/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Wenn dort "Ports: 5432/tcp" steht, ist es in Ordnung.

Zugang über pgadmin. Sie sollten in der Lage sein, sich als Postgres-Benutzer mit dem soeben festgelegten Passwort anzumelden.

3. Zusammenfassung

Wir haben die Anfangskonfiguration beschrieben, die bei der Installation von PostgreSQL erforderlich ist. Die anfängliche Einrichtung von PostgreSQL kann schwierig sein, daher lesen Sie bitte diesen Abschnitt.

Danke, dass Sie bis zum Ende zugesehen haben.