Pradinė konfigūracija, kurios reikia įdiegus "PostgreSQL" į "CentOS" ir prieš paleidžiant.


Paskelbimo data:2020 m. gruodžio 17 d.



INFOMARTION > Pradinė konfigūracija, kurios reikia įdiegus "PostgreSQL" į "CentOS" ir prieš paleidžiant.

Apžvalga.

Tai pradinė konfigūravimo procedūra, kurios reikia norint įdiegti ir paleisti "PostgreSQL" "CentOS" sistemoje. Informacija pagrįsta prielaida, kad naudojama "CentOS7". Taip pat įtrauktas skyrius apie saugumą.

Rekomenduojama naudoti "PostgreSQL", nes ji yra nemokama ir labai funkcionali. Girdėjau, kad anksčiau "PostgreSQL" funkcijos buvo lėtos, tačiau naujausios patobulėjo ir yra greitesnės.

Versijos yra šios.

CentOS versija7.6 (1810)
"PostgreSQL" versija9.2.24

Turinys

  1. įdiegti
  2. Sąrankos informacija
  3. santrauka

1. įdiegti

Šiame skyriuje aprašoma "PostgreSQL" diegimo procedūra.

1-1. "PostgreSQL" diegimas

Atlikite "PostgreSQL" diegimą naudodami komandą yum. Darbą atlikite kaip root naudotojas.

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

2. Sąrankos informacija

Šiame skyriuje aprašoma konfigūracija iki "PostgreSQL" paleidimo.

2-1. Sukurkite specialų "PostgreSQL" naudotoją.

Norėjau sukurti specialų vartotoją, kuris dirbtų su "PostgreSQL" (naudotų psql komandas), tačiau vartotojas jau buvo sukurtas. Prisimenu, kaip anksčiau kūriau naudotojus, todėl galbūt specifikacija pasikeitė.

Pabandykite pereiti prie naudotojo naudodami šią komandą.

[root@hostname ~]# su - postgres

Kadangi kai kurie žmonės galbūt naudoja senesnę "PostgreSQL" versiją, reikėtų paminėti, kad aplinkos kintamųjų nustatymo procedūra keičiant ".bashrc" nebereikalinga.

.bashrc


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

Numatytoji PGDATA "Postgres" naudotojams dabar yra "/var/lib/pgsql/data". Ji aprašyta kaip nuoroda į "/usr/lib/systemd/system/postgresql.service".

2-2. "PostgreSQL" duomenų rengimas

Sukurkite "PostgreSQL" duomenis. Kodavimas yra UNICODE. Katalogas "/var/lib/pgsql/data" buvo sukurtas pagal numatytuosius nustatymus, tačiau tų, kurie to nepadarė, taip pat prašoma sukurti katalogą.

-bash-4.2$ initdb --encoding=UNICODE

Kadangi "PGDATA=/var/lib/pgsql/data" yra nustatyta "/usr/lib/systemd/system/postgresql.service", "initdb --encoding=UNICODE" sukurs DB adresu "/var/lib/pgsql/". data/", DB yra sukurta "/var/lib/pgsql/data/".

2-3. Konfigūracijos failo keitimas

Leisti IP adresams pasiekti "PostgreSQL". Nustatykite sistemą taip, kad jos autentiškumas būtų patvirtintas slaptažodžiu ne vietinei prieigai.

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

Pakeiskite 'postgresql.conf' taip.

postgresql.conf【Prieš pakeitimą】


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

# - Connection Settings -

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

postgresql.conf【po pakeitimo】


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

# - Connection Settings -

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

Jei įjungsite šį nustatymą, galėsite pasiekti svetainę iš bet kurio IP adreso, nes tai yra svarbi saugumo dalis. Jei IP, prie kurio bus jungiamasi, yra fiksuotas, nurodykite fiksuotąjį IP.

Šis nustatymas reikalingas prisijungiant iš kito serverio nei tas, kuriame įdiegta "PostgreSQL", pvz., pgadmin. Šis nustatymas nereikalingas, jei prisijungiate prie serverio ir paleidžiate komandą psql. (nes ryšys užmezgamas iš jo paties (localhost))

Tai svarbus saugumo nustatymas, todėl kiek įmanoma sumažinkite naudotojų, galinčių jį pasiekti, skaičių.

Tada pakeiskite "pg_hba.conf".

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

Dokumento pabaigoje pridėkite šią informaciją.

pg_hba.conf


#Slaptažodžio autentiškumo patvirtinimas iš išorės.
host    all             all             0.0.0.0/0            md5

Įtraukus šį nustatymą, prisijungiant iš išorės reikalaujama slaptažodžio. Šios sritys gali tapti rimtomis saugumo spragomis, jei jos nenustatytos arba nustatytos neteisingai, todėl prašome jas nustatyti kuo kruopščiau.

2-4. įkrovos juostos patikrinimas

Atlikę išankstinę konfigūraciją, patikrinkite, ar paleidžiama "PostgreSQL". Kadangi DB buvo sukurta kaip postgres naudotojas, prieš pradėdami darbą persijunkite į postgres naudotoją.

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

Sėkmingai paleidę "PostgreSQL", patikrinkite, ar komanda psql veikia be problemų. Paleiskite komandą psql kaip postgres naudotojas.

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

Jei grąžinami pirmiau nurodyti rezultatai, viskas gerai.

2-5. Automatinio paleidimo nustatymas

Nors tai nėra privaloma, sunku paleisti "PostgreSQL" kiekvieną kartą iš naujo paleidžiant serverį, todėl jis konfigūruojamas taip, kad "PostgreSQL" būtų paleidžiamas automatiškai, kai paleidžiamas serveris. Ji taip pat registruojama į komandą systemctl. Atkreipkite dėmesį, kad ši procedūra skirta "CentOS7", todėl jei naudojate kitą nei "CentOS7" operacinę sistemą, turėsite naudoti komandą "Service".

Patikrinkite, ar egzistuoja '/usr/lib/systemd/system/postgresql.service'. Jei ne, sukurkite "postgresql.service" naudodami šią procedūrą. Paleiskite kaip root naudotojas.

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

Pateikiama ši informacija.

postgresql.service


[Unit]
#Aprašymas.
Description=PostgreSQL
#kontrolė prieš vykdymą ir po jo.
#Before=xxx.service
After=network.target

[Service]
#Vartotojo ir grupės paskyrimas
User=postgres
Group=postgres
#Suaktyvinus būseną, nustatykite būseną Aktyvuota.
Type=oneshot
RemainAfterExit=yes
#Paleiskite, sustabdykite ir perkraukite.
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]
#3 lygmens lygiaverčiai nustatymai.
WantedBy=multi-user.target

Tada užsiregistruokite naudodami komandą 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. Administracinio naudotojo įtraukimas į "PostgreSQL

Sukurkite vartotoją, kuris bus naudojamas "PostgreSQL" programoje, atskirai nuo vartotojo, kuris naudoja "PostgreSQL" iš "Linux". Tai naudotojas, kai dirbama su pgadmin ir t. t. Norėčiau pakeisti pagal nutylėjimą egzistuojančio "postgres" naudotojo slaptažodį ir jį naudoti.

Vykdykite šią komandą kaip postgres naudotojas.

-bash-4.2$ psql
postgres=# alter role postgres with password '(kompiuterio) slaptažodis';
postgres=# \q

※Laukelyje "Slaptažodis" įveskite norimą nustatyti slaptažodį.

2-7. Ugniasienių gręžimas

Leiskite prieigą prie "PostgreSQL" prievado, nes CentOS6 ir ankstesnėse versijose ugniasienė (iptables) pagal numatytuosius nustatymus leidžia tik ssh prieigą CentOS7 versijoje. Taip pat pridėkite parinktį "nuolatinis", kad konfigūracija būtų nuolatinė.

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

Jei rašoma "prievadai: 5432/tcp", vadinasi, viskas gerai.

Prieiga per pgadmin. Turėtumėte galėti prisijungti kaip postgres naudotojas su ką tik nustatytu slaptažodžiu.

3. santrauka

Aprašėme pradinę konfigūraciją, kurios reikia įdiegus "PostgreSQL". Pradinis "PostgreSQL" kūrimas gali būti sudėtingas, todėl žr. šį skyrių.

Dėkojame, kad žiūrėjote iki pabaigos.