Počáteční konfigurace vyžadovaná po instalaci PostgreSQL v systému CentOS a před spuštěním.


Datum vydání:17. prosince 2020.



INFOMARTION > Počáteční konfigurace vyžadovaná po instalaci PostgreSQL v systému CentOS a před spuštěním.

Přehled.

Toto je úvodní konfigurační postup potřebný k instalaci a spuštění PostgreSQL v systému CentOS. Informace vycházejí z předpokladu, že je používán systém CentOS7. Součástí je také oddíl o bezpečnosti.

Doporučujeme PostgreSQL, protože je zdarma a vysoce funkční. Slyšel jsem, že funkce PostgreSQL bývaly pomalé, ale v poslední době se zlepšily a jsou rychlejší.

Verze jsou následující.

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

Obsah

  1. nainstalovat
  2. Podrobnosti o nastavení
  3. shrnutí

1. nainstalovat

Tato část popisuje postup instalace PostgreSQL.

1-1. Instalace PostgreSQL

Instalaci PostgreSQL proveďte pomocí příkazu yum. Práci proveďte jako uživatel root.

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

2. Podrobnosti o nastavení

Tato část popisuje konfiguraci až do spuštění PostgreSQL.

2-1. Vytvoření vyhrazeného uživatele PostgreSQL.

Chtěl jsem vytvořit speciálního uživatele pro práci s PostgreSQL (pomocí příkazů psql), ale uživatel již byl vytvořen. Pamatuji si, že jsem uživatele vytvářel v minulosti, takže se možná specifikace změnila.

Zkuste přepnout na uživatele pomocí následujícího příkazu.

[root@hostname ~]# su - postgres

Protože někteří uživatelé možná používají starší verzi PostgreSQL, je třeba zmínit, že postup pro nastavení proměnných prostředí změnou následujícího souboru ".bashrc" již také není nutný.

.bashrc


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

Výchozí PGDATA pro uživatele systému postgres jsou nyní '/var/lib/pgsql/data'. Je popsán jako odkaz na "/usr/lib/systemd/system/postgresql.service".

2-2. Příprava dat PostgreSQL

Vytvoření dat PostgreSQL. Kódování je UNICODE. Ve výchozím nastavení byl vytvořen adresář "/var/lib/pgsql/data", ale ti, kteří tak neučinili, jsou rovněž požádáni o vytvoření adresáře.

-bash-4.2$ initdb --encoding=UNICODE

Protože je v souboru "/usr/lib/systemd/system/postgresql.service" nastaveno "PGDATA=/var/lib/pgsql/data", příkaz "initdb --encoding=UNICODE" vytvoří DB v adresáři "/var/lib/pgsql/". data/", DB je vytvořena v adresáři "/var/lib/pgsql/data/".

2-3. Úprava konfiguračního souboru

Povolení přístupu k PostgreSQL z IP adres. Nastavte systém tak, aby byl pro nelokální přístup ověřen heslem.

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

Upravte soubor 'postgresql.conf' takto.

postgresql.conf【Před změnou】


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

# - Connection Settings -

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

postgresql.conf【po změně】


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

# - Connection Settings -

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

Pokud toto nastavení zadáte, budete mít přístup k webu z libovolné IP adresy, protože se jedná o důležitou součást zabezpečení. Pokud je IP adresa, ke které se má přistupovat, pevná, uveďte ji.

Toto nastavení je nutné při přihlašování z jiného serveru, než na kterém je PostgreSQL nainstalována, např. pgadmin. Toto nastavení není nutné, pokud se přihlásíte k serveru a spustíte příkaz psql. (protože spojení pochází od něj samotného (localhost)).

Jedná se o důležité nastavení zabezpečení, proto co nejvíce omezte počet uživatelů, kteří k němu mají přístup.

Pak upravte soubor 'pg_hba.conf'.

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

Na konec dokumentu přidejte následující informace.

pg_hba.conf


#Ověřování hesla zvenčí.
host    all             all             0.0.0.0/0            md5

Pokud toto nastavení zahrnete, bude při připojení zvenčí vyžadováno heslo. Tyto oblasti mohou být vážnou bezpečnostní dírou, pokud nejsou nastaveny nebo jsou nastaveny nesprávně, proto je nastavte s maximální péčí.

2-4. kontrola bootstrapu

Po dokončení předkonfigurace zkontrolujte, zda se PostgreSQL spustí. Protože DB byla vytvořena jako uživatel postgres, přepněte se před spuštěním na uživatele postgres.

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

Po úspěšném spuštění PostgreSQL zkontrolujte, zda příkaz psql funguje bez problémů. Spusťte příkaz psql jako uživatel 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)

Pokud se vrátí výše uvedené výsledky, je to v pořádku.

2-5. Nastavení automatického spuštění

Ačkoli to není povinné, je obtížné spouštět PostgreSQL při každém restartu serveru, proto je nakonfigurován tak, aby se PostgreSQL spouštěl automaticky při startu serveru. Registruje se také do příkazu systemctl. Upozorňujeme, že tento postup je určen pro systém CentOS7, takže pokud používáte jiný systém než CentOS7, budete muset použít příkaz Service.

Zkontrolujte, zda existuje soubor '/usr/lib/systemd/system/postgresql.service'. Pokud ne, vytvořte soubor 'postgresql.service' pomocí následujícího postupu. Spusťte jako uživatel root.

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

K dispozici jsou následující informace.

postgresql.service


[Unit]
#Popis.
Description=PostgreSQL
#Kontrola před a po provedení.
#Before=xxx.service
After=network.target

[Service]
#Označení uživatele a skupiny
User=postgres
Group=postgres
#Po aktivaci nastavte stav na Aktivováno.
Type=oneshot
RemainAfterExit=yes
#Spuštění, zastavení a opětovné načtení.
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í nastavení úrovně Runlevel 3.
WantedBy=multi-user.target

Poté se zaregistrujte pomocí pří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. Přidání administrátorského uživatele do PostgreSQL

Vytvořte uživatele, který bude používán v aplikaci PostgreSQL, odděleně od uživatele, který obsluhuje PostgreSQL z Linuxu. Jedná se o uživatele při práci s programem pgadmin atd. Chtěl bych změnit heslo uživatele postgres, který existuje ve výchozím nastavení, a používat ho.

Spusťte následující příkaz jako uživatel postgres.

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

※Do pole "Heslo" zadejte heslo, které chcete nastavit.

2-7. Vrtání firewallů

Povolte přístup k portu PostgreSQL, protože firewall (iptables pro CentOS6 a starší) povoluje ve výchozím nastavení pouze přístup přes ssh v CentOS7. Přidejte také možnost "permanent", aby byla konfigurace 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:

Pokud je uvedeno "porty: 5432/tcp", je to v pořádku.

Přístup přes pgadmin. Měli byste být schopni přihlásit se jako uživatel postgres s právě nastaveným heslem.

3. shrnutí

Popsali jsme počáteční konfiguraci vyžadovanou při instalaci PostgreSQL. Počáteční sestavení PostgreSQL může být obtížné, proto si přečtěte tuto část.

Děkujeme, že jste se dívali až do konce.




■INFORMATION

Kliknutím sem přejdete na horní stránku s informacemi.


■PROFILE

Kliknutím sem získáte profil.


■Kontaktní údaje.

V případě dotazů k článku nás prosím kontaktujte zde.