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 CentOS | 7.6 (1810) |
---|---|
Versiunea de PostgreSQL | 9.2.24 |
Cuprins
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ă.
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ă.
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
#listen_addresses = 'localhost' # what IP address(es) to listen on;
#------------------------------------------------------------------------------
# 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.
#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.
[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.