Configurație inițială necesară după instalarea PostgreSQL pe CentOS și înainte de pornire.


Data publicării:17 decembrie 2020.



INFOMARTION > Configurație inițială necesară după instalarea PostgreSQL pe CentOS și înainte de pornire.

Prezentare generală.

Aceasta este procedura de configurare inițială necesară pentru a instala și a porni PostgreSQL pe CentOS. Informațiile se bazează pe ipoteza că se utilizează CentOS7. De asemenea, este inclusă secțiunea privind securitatea.

Se recomandă PostgreSQL, deoarece este gratuit și foarte funcțional. Am auzit că funcțiile PostgreSQL obișnuiau să fie lente, dar cele recente s-au îmbunătățit și sunt mai rapide.

Versiunile sunt următoarele.

Versiunea CentOS7.6 (1810)
Versiunea de PostgreSQL9.2.24

Cuprins

  1. instalați
  2. Detalii de configurare
  3. rezumat

1. instalați

Această secțiune descrie procedura de instalare a PostgreSQL.

1-1. Instalarea PostgreSQL

Efectuați instalarea PostgreSQL prin intermediul comenzii yum. Efectuați lucrările ca utilizator root.

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

2. Detalii de configurare

Această secțiune descrie configurația până la pornirea PostgreSQL.

2-1. Creați un utilizator PostgreSQL dedicat.

Am vrut să creez un utilizator dedicat pentru a manipula PostgreSQL (utilizarea comenzilor psql), dar utilizatorul fusese deja creat. Îmi amintesc că am creat utilizatori atunci când i-am creat în trecut, deci poate că specificația s-a schimbat.

Încercați să treceți la un utilizator cu următoarea comandă.

[root@hostname ~]# su - postgres

Deoarece este posibil ca unele persoane să folosească o versiune mai veche a PostgreSQL, trebuie menționat faptul că procedura de setare a variabilelor de mediu prin modificarea următorului ".bashrc" nu mai este necesară.

.bashrc


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

PGDATA implicită pentru utilizatorii postgres pare să fie acum "/var/lib/pgsql/data". Acesta este descris ca făcând referire la "/usr/lib/systemd/system/postgresql.service".

2-2. Pregătirea datelor PostgreSQL

Creați date PostgreSQL. Codificarea este UNICODE. Directorul "/var/lib/pgsql/data" a fost creat în mod implicit, dar cei care nu au făcut-o sunt, de asemenea, rugați să creeze un folder.

-bash-4.2$ initdb --encoding=UNICODE

Deoarece "PGDATA=/var/lib/pgsql/data" este setat în "/usr/lib/systemd/system/postgresql.service", "initdb --encoding=UNICODE" va construi o bază de date în "/var/lib/pgsql/". data/", baza de date este construită în "/var/lib/pgsql/data/".

2-3. Modificarea fișierului de configurare

Permiteți adreselor IP să acceseze PostgreSQL. Configurați sistemul astfel încât să fie autentificat prin parolă pentru accesul non-local.

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

Modificați "postgresql.conf" după cum urmează.

postgresql.conf【Înainte de schimbare】


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

# - Connection Settings -

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

postgresql.conf【după modificare】


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

# - Connection Settings -

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

Pentru a adăuga la aceasta, deoarece este o parte importantă a securității, dacă introduceți această setare, veți putea accesa site-ul de la orice IP. În cazul în care IP-ul care urmează să fie accesat este fix, vă rugăm să indicați IP-ul fix.

Această setare este necesară atunci când vă conectați de pe un alt server decât cel pe care este instalat PostgreSQL, de exemplu, pgadmin. Această setare nu este necesară dacă vă conectați la server și executați comanda psql. (din moment ce conexiunea provine de la el însuși (localhost))

Aceasta este o setare de securitate importantă, așa că reduceți pe cât posibil numărul de utilizatori care o pot accesa.

Apoi modificați 'pg_hba.conf'.

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

Adăugați următoarele informații la sfârșitul documentului.

pg_hba.conf


#Autentificarea parolei din exterior.
host    all             all             0.0.0.0/0            md5

Prin includerea acestei setări, este necesară o parolă la conectarea din exterior. Aceste zone pot constitui găuri de securitate grave dacă nu sunt configurate sau dacă sunt configurate incorect, așa că vă rugăm să le configurați cu cea mai mare atenție.

2-4. verificarea bootstrap

Acum că preconfigurarea este completă, verificați dacă PostgreSQL pornește. Deoarece baza de date a fost construită ca utilizator postgres, treceți la utilizatorul postgres înainte de a începe.

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

După ce PostgreSQL a fost pornit cu succes, verificați dacă comanda psql funcționează fără probleme. Rulați comanda psql ca utilizator postgres.

-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)

Este în regulă dacă sunt returnate rezultatele de mai sus.

2-5. Setare pentru pornire automată

Deși nu este obligatoriu, este dificil să porniți PostgreSQL de fiecare dată când serverul este repornit, așa că este configurat astfel încât PostgreSQL să pornească automat atunci când serverul este pornit. De asemenea, se înregistrează la comanda systemctl. Vă rugăm să rețineți că această procedură este pentru CentOS7, așa că, dacă folosiți altceva decât CentOS7, va trebui să folosiți comanda Service pentru a rezolva această problemă.

Verificați dacă '/usr/lib/systemd/system/postgresql.service' există. În caz contrar, creați "postgresql.service" utilizând următoarea procedură. Rulați ca utilizator root.

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

Sunt furnizate următoarele informații.

postgresql.service


[Unit]
#Descriere.
Description=PostgreSQL
#Controlul înainte și după execuție.
#Before=xxx.service
After=network.target

[Service]
#Desemnarea utilizatorului și a grupului
User=postgres
Group=postgres
#Odată activat, setați statutul pe Activat.
Type=oneshot
RemainAfterExit=yes
#Porniți, opriți și reîncărcați.
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]
#Setări echivalente Runlevel 3.
WantedBy=multi-user.target

În continuare, înregistrați-vă cu ajutorul comenzii 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. Adăugarea unui utilizator administrativ la PostgreSQL

Creați un utilizator care să fie utilizat în cadrul aplicației PostgreSQL, separat de utilizatorul care operează PostgreSQL din Linux. Acesta este utilizatorul atunci când se operează cu pgadmin, etc. Aș dori să schimb parola utilizatorului postgres care există în mod implicit și să o folosesc.

Rulați următoarea comandă ca utilizator postgres.

-bash-4.2$ psql
postgres=# alter role postgres with password 'Parola (de calculator)';
postgres=# \q

※Introduceți parola pe care doriți să o setați în câmpul "Password" (Parolă).

2-7. Perforarea zidurilor de protecție

Permiteți accesul la portul PostgreSQL, deoarece firewall-ul (iptables pentru CentOS6 și versiunile anterioare) permite accesul ssh în mod implicit numai pe CentOS7. Adăugați, de asemenea, opțiunea "permanent" pentru a face configurația permanentă.

[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:

Dacă scrie "ports: 5432/tcp", este în regulă.

Acces prin pgadmin. Ar trebui să vă puteți autentifica ca utilizator postgres cu parola pe care tocmai ați stabilit-o.

3. rezumat

Am descris configurația inițială necesară atunci când este instalat PostgreSQL. Configurarea inițială a PostgreSQL poate fi dificilă, așa că vă rugăm să consultați această secțiune.

Vă mulțumim că ați urmărit până la sfârșit.