Установка и первоначальная настройка 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 + использовать онлайн конфигураторы простой и более сложный

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

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


Оставить комментарий

avatar
1000

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

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