Počiatočná konfigurácia potrebná po inštalácii PostgreSQL na CentOS a pred spustením.


Dátum vydania:17. decembra 2020.



INFOMARTION > Počiatočná konfigurácia potrebná po inštalácii PostgreSQL na CentOS a pred spustením.

Prehľad.

Toto je úvodný postup konfigurácie potrebný na inštaláciu a spustenie PostgreSQL v systéme CentOS. Informácie vychádzajú z predpokladu, že sa používa systém CentOS7. Súčasťou je aj časť o bezpečnosti.

PostgreSQL sa odporúča, pretože je bezplatný a vysoko funkčný. Počul som, že funkcie PostgreSQL bývali pomalé, ale tie najnovšie sa zlepšili a sú rýchlejšie.

Verzie sú nasledovné.

Verzia systému CentOS7.6 (1810)
Verzia PostgreSQL9.2.24

Obsah

  1. nainštalovať
  2. Podrobnosti o nastavení
  3. zhrnutie

1. nainštalovať

Táto časť opisuje postup inštalácie PostgreSQL.

1-1. Inštalácia PostgreSQL

Inštaláciu PostgreSQL vykonajte pomocou príkazu yum. Vykonajte prácu ako používateľ root.

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

2. Podrobnosti o nastavení

Táto časť opisuje konfiguráciu až po spustenie PostgreSQL.

2-1. Vytvorte vyhradeného používateľa PostgreSQL.

Chcel som vytvoriť osobitného používateľa na manipuláciu s PostgreSQL (používať príkazy psql), ale používateľ už bol vytvorený. Pamätám si, že som používateľov vytváral v minulosti, takže možno sa špecifikácia zmenila.

Skúste sa prepnúť na používateľa pomocou nasledujúceho príkazu.

[root@hostname ~]# su - postgres

Keďže niektorí ľudia možno používajú staršiu verziu PostgreSQL, je potrebné spomenúť, že postup nastavovania premenných prostredia zmenou nasledujúceho súboru ".bashrc" už tiež nie je potrebný.

.bashrc


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

Predvolené PGDATA pre používateľov systému postgres je teraz '/var/lib/pgsql/data'. Je opísaný ako odkaz na "/usr/lib/systemd/system/postgresql.service".

2-2. Príprava údajov PostgreSQL

Vytvorenie údajov PostgreSQL. Kódovanie je UNICODE. Adresár "/var/lib/pgsql/data" bol vytvorený štandardne, ale tí, ktorí ho nevytvorili, sú tiež požiadaní o vytvorenie adresára.

-bash-4.2$ initdb --encoding=UNICODE

Keďže v súbore "/usr/lib/systemd/system/postgresql.service" je nastavené "PGDATA=/var/lib/pgsql/data", príkaz "initdb --encoding=UNICODE" vytvorí DB v súbore "/var/lib/pgsql/ data/", DB je vytvorená v adresári "/var/lib/pgsql/data/".

2-3. Úprava konfiguračného súboru

Povolenie prístupu k PostgreSQL z IP adries. Nastavte systém tak, aby bol overený heslom pre nelokálny prístup.

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

Upravte súbor 'postgresql.conf' takto.

postgresql.conf【Pred zmenou】


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

# - Connection Settings -

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

postgresql.conf【po zmene】


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

# - Connection Settings -

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

Ak toto nastavenie zadáte, budete môcť na stránku pristupovať z akejkoľvek IP adresy, pretože ide o dôležitú súčasť zabezpečenia. Ak je IP adresa, ku ktorej sa má získať prístup, pevná, uveďte ju.

Toto nastavenie je potrebné pri prihlasovaní z iného servera, ako je server, na ktorom je nainštalovaná PostgreSQL, napr. pgadmin. Toto nastavenie nie je potrebné, ak sa prihlásite na server a spustíte príkaz psql. (keďže spojenie pochádza od neho (localhost))

Ide o dôležité nastavenie zabezpečenia, preto čo najviac minimalizujte počet používateľov, ktorí k nemu majú prístup.

Potom upravte súbor 'pg_hba.conf'.

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

Na koniec dokumentu pridajte tieto informácie.

pg_hba.conf


#Overovanie hesla zvonku.
host    all             all             0.0.0.0/0            md5

Po zapnutí tohto nastavenia sa pri pripojení zvonku vyžaduje heslo. Tieto oblasti môžu byť vážnou bezpečnostnou dierou, ak nie sú nastavené alebo sú nastavené nesprávne, preto ich nastavte s maximálnou starostlivosťou.

2-4. kontrola štartovacieho pásu

Po dokončení predkonfigurácie skontrolujte, či sa PostgreSQL spustí. Keďže DB bola vytvorená ako používateľ postgres, pred spustením sa prepnite na používateľa postgres.

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

Po úspešnom spustení PostgreSQL skontrolujte, či príkaz psql funguje bez problémov. Spustite príkaz psql ako používateľ 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)

Ak sa vrátia vyššie uvedené výsledky, je to v poriadku.

2-5. Nastavenie automatického spustenia

Hoci to nie je povinné, je ťažké spúšťať PostgreSQL pri každom reštarte servera, preto je nakonfigurovaný tak, aby sa PostgreSQL spúšťal automaticky pri štarte servera. Registruje sa aj do príkazu systemctl. Upozorňujeme, že tento postup sa týka systému CentOS7, takže ak používate iný systém ako CentOS7, budete musieť použiť príkaz Service.

Skontrolujte, či existuje súbor '/usr/lib/systemd/system/postgresql.service'. Ak nie, vytvorte súbor 'postgresql.service' pomocou nasledujúceho postupu. Spustite ako používateľ root.

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

Uvádzajú sa tieto informácie.

postgresql.service


[Unit]
#Popis.
Description=PostgreSQL
#Kontrola pred a po vykonaní.
#Before=xxx.service
After=network.target

[Service]
#Označenie používateľa a skupiny
User=postgres
Group=postgres
#Po aktivácii nastavte stav na možnosť Aktivované.
Type=oneshot
RemainAfterExit=yes
#Spustenie, zastavenie a opätovné načítanie.
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]
#Ekvivalentné nastavenia úrovne Runlevel 3.
WantedBy=multi-user.target

Potom sa zaregistrujte pomocou príkazu 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. Pridanie administrátorského používateľa do PostgreSQL

Vytvorte používateľa, ktorý sa bude používať v aplikácii PostgreSQL, oddelene od používateľa, ktorý obsluhuje PostgreSQL z Linuxu. Toto je používateľ pri práci s pgadmin atď. Chcel by som zmeniť heslo používateľa postgres, ktorý existuje v predvolenom nastavení, a používať ho.

Spustite nasledujúci príkaz ako používateľ postgres.

-bash-4.2$ psql
postgres=# alter role postgres with password '(počítačové) heslo';
postgres=# \q

※Do poľa "Heslo" zadajte heslo, ktoré chcete nastaviť.

2-7. Vŕtanie firewallov

Povoľte prístup k portu PostgreSQL, pretože firewall (iptables pre CentOS6 a staršie) povoľuje v predvolenom nastavení iba prístup cez ssh v systéme CentOS7. Pridajte aj možnosť "permanent", aby bola konfigurácia trvalá.

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

Ak je uvedené "porty: 5432/tcp", je to v poriadku.

Prístup cez pgadmin. Mali by ste byť schopní prihlásiť sa ako používateľ postgres s heslom, ktoré ste práve nastavili.

3. zhrnutie

Opísali sme počiatočnú konfiguráciu potrebnú pri inštalácii PostgreSQL. Počiatočné zostavenie PostgreSQL môže byť náročné, preto si prečítajte túto časť.

Ďakujeme vám za sledovanie až do konca.