Wstępna konfiguracja wymagana po zainstalowaniu PostgreSQL w systemie CentOS, a przed uruchomieniem.


Data publikacji:17 grudnia 2020 r.



INFOMARTION > Wstępna konfiguracja wymagana po zainstalowaniu PostgreSQL w systemie CentOS, a przed uruchomieniem.

Przegląd.

Jest to procedura wstępnej konfiguracji wymagana do zainstalowania i uruchomienia PostgreSQL w systemie CentOS. Informacje opierają się na założeniu, że używany jest system CentOS7. Uwzględniono również część dotyczącą bezpieczeństwa.

Zaleca się stosowanie bazy PostgreSQL, ponieważ jest ona bezpłatna i bardzo funkcjonalna. Słyszałem, że funkcje PostgreSQL były kiedyś wolne, ale ostatnio zostały ulepszone i są szybsze.

Wersje są następujące.

Wersja CentOS7.6 (1810)
Wersja PostgreSQL9.2.24

Spis treści

  1. zainstalować
  2. Szczegóły konfiguracji
  3. streszczenie

1. zainstalować

W tym rozdziale opisano procedurę instalacji PostgreSQL.

1-1. Instalacja PostgreSQL

Wykonaj instalację PostgreSQL za pomocą polecenia yum. Wykonaj pracę jako użytkownik root.

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

2. Szczegóły konfiguracji

W tym rozdziale opisano konfigurację aż do uruchomienia PostgreSQL.

2-1. Utwórz dedykowanego użytkownika PostgreSQL.

Chciałem utworzyć dedykowanego użytkownika do obsługi PostgreSQL (używania poleceń psql), ale użytkownik ten został już utworzony. Pamiętam, że tworzyłem użytkowników w przeszłości, więc być może specyfikacja uległa zmianie.

Spróbuj przełączyć się na użytkownika za pomocą następującego polecenia.

[root@hostname ~]# su - postgres

Ponieważ niektóre osoby mogą używać starszej wersji PostgreSQL, należy wspomnieć, że procedura ustawiania zmiennych środowiskowych poprzez zmianę pliku ".bashrc" również nie jest już konieczna.

.bashrc


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

Domyślnym PGDATA dla użytkowników postgresa jest teraz '/var/lib/pgsql/data'. Jest on opisany jako odwołujący się do "/usr/lib/systemd/system/postgresql.service".

2-2. Przygotowanie danych PostgreSQL

Tworzenie danych PostgreSQL. Kodowanie to UNICODE. Katalog "/var/lib/pgsql/data" został utworzony domyślnie, ale osoby, które tego nie zrobiły, są również proszone o utworzenie katalogu.

-bash-4.2$ initdb --encoding=UNICODE

Ponieważ "PGDATA=/var/lib/pgsql/data" jest ustawione w "/usr/lib/systemd/system/postgresql.service", "initdb --encoding=UNICODE" utworzy DB w "/var/lib/pgsql/ data/", DB jest tworzony w katalogu "/var/lib/pgsql/data/".

2-3. Modyfikowanie pliku konfiguracyjnego

Zezwalaj adresom IP na dostęp do serwera PostgreSQL. Skonfiguruj system tak, aby był uwierzytelniany hasłem w przypadku dostępu nielokalnego.

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

Zmodyfikuj plik 'postgresql.conf' w następujący sposób.

postgresql.conf【Przed zmianą】


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

# - Connection Settings -

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

postgresql.conf【po zmianie】


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

# - Connection Settings -

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

Dodatkowo, ponieważ jest to ważny element bezpieczeństwa, po wprowadzeniu tego ustawienia użytkownik będzie mógł uzyskać dostęp do witryny z dowolnego adresu IP. Jeśli adres IP, do którego ma być uzyskany dostęp, jest stały, należy podać stały adres IP.

Ustawienie to jest konieczne w przypadku logowania się z innego serwera niż ten, na którym zainstalowany jest PostgreSQL, np. pgadmin. To ustawienie nie jest konieczne, jeśli zalogujesz się na serwerze i uruchomisz polecenie psql. (ponieważ połączenie pochodzi od niego samego (localhost))

Jest to ważne ustawienie zabezpieczeń, dlatego należy jak najbardziej ograniczyć liczbę użytkowników, którzy mogą uzyskać do niego dostęp.

Następnie należy zmodyfikować plik 'pg_hba.conf'.

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

Na końcu dokumentu należy dodać następujące informacje.

pg_hba.conf


#Uwierzytelnianie hasłem z zewnątrz.
host    all             all             0.0.0.0/0            md5

Włączenie tego ustawienia powoduje, że podczas łączenia się z zewnątrz wymagane jest podanie hasła. Obszary te mogą stanowić poważne luki w zabezpieczeniach, jeśli nie zostaną skonfigurowane lub zostaną skonfigurowane niepoprawnie, dlatego należy je skonfigurować z należytą starannością.

2-4. kontrola bootstrapu

Po zakończeniu konfiguracji wstępnej sprawdź, czy PostgreSQL został uruchomiony. Ponieważ baza danych została zbudowana jako użytkownik postgres, przed rozpoczęciem należy przełączyć się na użytkownika postgres.

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

Po pomyślnym uruchomieniu PostgreSQL sprawdź, czy polecenie psql działa bez problemów. Uruchom polecenie psql jako użytkownik 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)

Jeśli zostaną zwrócone powyższe wyniki, jest to w porządku.

2-5. Ustawienie automatycznego rozruchu

Mimo że nie jest to obowiązkowe, trudno jest uruchamiać PostgreSQL przy każdym ponownym uruchomieniu serwera, dlatego jest on skonfigurowany w taki sposób, aby PostgreSQL był uruchamiany automatycznie przy starcie serwera. Rejestruje się również do polecenia systemctl. Należy pamiętać, że ta procedura dotyczy systemu CentOS7, więc jeśli używasz systemu innego niż CentOS7, będziesz musiał użyć polecenia Service, aby poradzić sobie z tym problemem.

Sprawdź, czy istnieje usługa '/usr/lib/systemd/system/postgresql.service'. Jeśli nie, utwórz "postgresql.service", korzystając z poniższej procedury. Uruchom jako użytkownik root.

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

Podane są następujące informacje.

postgresql.service


[Unit]
#Opis.
Description=PostgreSQL
#Kontrola przed- i porealizacyjna.
#Before=xxx.service
After=network.target

[Service]
#Oznaczenie użytkownika i grupy
User=postgres
Group=postgres
#Po aktywacji należy ustawić status na Aktywny.
Type=oneshot
RemainAfterExit=yes
#Uruchomienie, zatrzymanie i przeładowanie.
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]
#Ustawienia równoważne Runlevel 3.
WantedBy=multi-user.target

Następnie należy zarejestrować się za pomocą polecenia 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. Dodawanie użytkownika administracyjnego do PostgreSQL

Utwórz użytkownika, który będzie używany w aplikacji PostgreSQL, oddzielnie od użytkownika, który obsługuje PostgreSQL z poziomu systemu Linux. Jest to użytkownik używany podczas pracy z programem pgadmin itp. Chciałbym zmienić hasło użytkownika postgres, który istnieje domyślnie, i użyć go.

Wykonaj następujące polecenie jako użytkownik postgres.

-bash-4.2$ psql
postgres=# alter role postgres with password '(komputer) hasło';
postgres=# \q

※W polu "Hasło" wpisz hasło, które chcesz ustawić.

2-7. Wiercenie zapór ogniowych

Zezwól na dostęp do portu PostgreSQL, ponieważ zapora sieciowa (iptables w systemie CentOS6 i wcześniejszych) domyślnie zezwala na dostęp tylko przez ssh w systemie CentOS7. Dodaj także opcję "permanent", aby konfiguracja była trwała.

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

Jeśli widnieje na nim napis "ports: 5432/tcp", to znaczy, że wszystko jest w porządku.

Dostęp za pomocą programu pgadmin. Powinieneś być w stanie zalogować się jako użytkownik postgres z hasłem, które właśnie ustawiłeś.

3. streszczenie

Opisaliśmy wstępną konfigurację wymaganą podczas instalacji PostgreSQL. Początkowa konfiguracja PostgreSQL może być trudna, dlatego należy zapoznać się z tym rozdziałem.

Dziękujemy, że oglądaliście do końca.