Установка и первоначальная настройка PostgreSQL 13 на Red Hat Enterprise Linux 8.2

Буквально позавчера (24.09.2020) вышел релиз PostgreSQL 13 с множеством интересных доработок. Краткий пресс-релиз на русском можно почитать на opennet.ru и на официальном сайте.

Давайте быстро установим новую версию PostgreSQL 13 и сделаем минимальные настройки.

Исходные данные: Red Hat Enterprise Linux 8.2
Задача: Установить PostgreSQL 13

Идем на официальную страницу выбора rpm-пакетов репозитариев и выбираем репозитарий Red Hat Enterprise Linux 8 — x86_64

Устанавливаем репозитарий:

dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Отключим встроенный модуль postgresql:

dnf -qy module disable postgresql

Устанавливаем PostgreSQL 13.x:

dnf install -y postgresql13-server

После установки PostgreSQL 13 не создает кластер баз данных, это нужно сделать вручную.
Важно знать, что в Red Hat каталог с данными и файлами настройки будет /var/lib/pgsql/13/data

Создадим кластер баз данных, при этом зададим дополнительные настройки через PGSETUP_INITDB_OPTIONS:

export PGSETUP_INITDB_OPTIONS="--encoding='UTF-8' --lc-collate='en_US.UTF-8' --lc-ctype='en_US.UTF-8'"
/usr/pgsql-13/bin/postgresql-13-setup initdb

Будет выведено сообщение:

Initializing database ... OK

Я задал через PGSETUP_INITDB_OPTIONS свои настройки, у Вас их может не быть (можете использовать настройки по умолчанию), не нужно слепо повторять мой пример, читайте документацию и задавайте нужные Вам опции создания кластера баз данных PostgreSQL.

Теперь включим запуск PostgreSQL 13 при запуске системы:

systemctl enable postgresql-13

И запустим его:

systemctl start postgresql-13

Проверим статус:

systemctl status postgresql-13

Будет выведено:

● postgresql-13.service - PostgreSQL 13 database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql-13.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-09-26 20:55:45 +05; 4s ago
     Docs: https://www.postgresql.org/docs/13/static/
  Process: 156197 ExecStartPre=/usr/pgsql-13/bin/postgresql-13-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
 Main PID: 156203 (postmaster)
    Tasks: 8 (limit: 821371)
   Memory: 19.9M
   CGroup: /system.slice/postgresql-13.service
           ├─156203 /usr/pgsql-13/bin/postmaster -D /var/lib/pgsql/13/data/
           ├─156204 postgres: logger
           ├─156206 postgres: checkpointer
           ├─156207 postgres: background writer
           ├─156208 postgres: walwriter
           ├─156209 postgres: autovacuum launcher
           ├─156210 postgres: stats collector
           └─156211 postgres: logical replication launcher

Sep 26 20:55:45 srv-dev systemd[1]: Starting PostgreSQL 13 database server...
Sep 26 20:55:45 srv-dev postmaster[156203]: 2020-09-26 20:55:45.430 +05 [156203] LOG:  redirecting log output to logging collector process
Sep 26 20:55:45 srv-dev postmaster[156203]: 2020-09-26 20:55:45.430 +05 [156203] HINT:  Future log output will appear in directory "log".
Sep 26 20:55:45 srv-dev systemd[1]: Started PostgreSQL 13 database server.

Проверим открытые порты:

netstat -ltupn | grep postmaster

tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      156203/postmaster
tcp6       0      0 ::1:5432                :::*                    LISTEN      156203/postmaster

Первым делом меняем пароль пользователя postgres:

su - postgres
psql
postgres=# \password postgres
postgres=# \q

По умолчанию PostgreSQL принимает соединения только с локальных служб, т.к. слушает интерфейс localhost и это абсолютно правильно с точки зрения безопасности, но если Вы планируете подключения к серверу извне или из локальной сети, то Вам потребуется поменять параметр listen_addresses

Для PostgreSQL 13 открываем основной файл настроек /var/lib/pgsql/13/data/postgresql.conf и раскомментируем строку

listen_addresses = 'localhost'

исправим её на

listen_addresses = 'localhost,192.168.35.10'

таким образом мы укажем PostgreSQL слушать сетевые соединения на интерфейсе localhost и на нашем внутреннем интерфейсе локальной сети с IP адресом 192.168.35.10

Теперь разрешим подключение из локальной сети с любых хостов и к любым БД, для этого файле /var/lib/pgsql/13/data/pg_hba.conf после строки:

# IPv4 local connections:
host    all             all             127.0.0.1/32            peer

Добавим строку:

host    all             all             192.168.35.0/24         md5

,где 192.168.35.0/24 — это наша локальная подсеть.

Далее выходим из под пользователя postgres и рестартуем PostgreSQL:

systemctl restart postgresql-13

Проверяем открытые порты:

netstat -ltupn | grep postmaster

tcp        0      0 192.168.35.10:5432      0.0.0.0:*               LISTEN      7829/postmaster
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      7829/postmaster
tcp6       0      0 ::1:5432                :::*                    LISTEN      7829/postmaster

По умолчанию в Red Hat включен firewalld и он запрещает все входящие соединения кроме служб ssh и dhcpv6-client, если мы решили открыть доступ на порт 5432 из локальной сети, то нужно настроить firewalld.

Проверим список разрешенных служб:

firewall-cmd --zone=public --list-services

Будет выведено:

cockpit dhcpv6-client ssh

Теперь добавим службу postgresql:

firewall-cmd --zone=public --permanent --add-service=postgresql
firewall-cmd --reload

Более подробно о настройке firewalld можно узнать из этой статьи.

Отлично, порт открыт! Теперь мы можем подключиться к PostgreSQL c локального сервера и из нашей локальной сети.

В данной статье мы не производили первоначальную минимальную настройку параметров PostgreSQL, для этого Вы можете воспользоваться моей старой статьей про установку PostgreSQL 10 на Debian 9 + использовать онлайн конфигураторы простой и более сложный

На этом все, до скорых встреч.

Если у Вас возникли вопросы или Вы хотите, чтобы я помог Вам, то Вы всегда можете связаться со мной разными доступными способами.


Подписаться
Уведомить о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x