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 CentOS | 7.6 (1810) |
---|---|
Wersja PostgreSQL | 9.2.24 |
Spis treści
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.
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.
#------------------------------------------------------------------------------
# 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;
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.
#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.
[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.
■INFORMATION
Kliknij tutaj, aby przejść do górnej strony INFORMACJI.
■PROFILE
Kliknij tutaj, aby zobaczyć profil.
■Dane kontaktowe.
W przypadku pytań dotyczących artykułu prosimy o kontakt tutaj.