C Red Hat Enterprise Linux (RHEL) столкнулся совсем недавно, так как появилась необходимость развернуть специализированное ПО именно на этой версии операционной системе. Ранее работал с CentOS, которая основана на RHEL, поэтому проблем с RHEL не возникло. В данной статье будет описан процесс установки PostgreSQL на Red Hat Enterprise Linux 8.

PostgreSQL 10 включён в репозитории RHEL 8, для его установки выполним команду:

dnf install @postgresql
Установка PostgreSQL на Red Hat Enterprise Linux

Если установку производите не под учётной записью администратора, то в терминале вначале всех команд прописываем команду sudo. Пример: sudo dnf install @postgresql

Можно переключиться на учётную запись root, устанавливаем под ним всё необходимое и выходим из учётной записи root.

Инициализируем базу данных:

postgresql-setup --initdb
Установка PostgreSQL на Red Hat Enterprise Linux

Запустим сервис PostgreSQL, включим его автоматический запуск при загрузке системы и проверим его состояние:

systemctl start postgresql
systemctl enable postgresql
systemctl status postgresql
Установка PostgreSQL на Red Hat Enterprise Linux

Защитим учётную запись пользователя Postgres и учётную запись администратора. Создадим пароль для учётной записи postgres:

passwd postgres
Установка PostgreSQL на Red Hat Enterprise Linux

Переключаемся на учётную запись postgres:

su - postgres

Защитим учётную запись пользователя администратора базы данных PostgreSQL задав надёжный пароль:

psql -c "ALTER USER postgres WITH PASSWORD 'tut_slojni_parol';"
Установка PostgreSQL на Red Hat Enterprise Linux

Выходим из-под пользователя postgres:

exit

По умолчанию PostgreSQL принимает соединения только с локальных служб и слушает интерфейс localhost. Мы будем подключаться к нему удалённо, поэтому нам надо разрешить удалённое подключение. Открываем основной файл настроек /var/lib/pgsql/data/postgresql.conf и раскомментируем строку:

listen_addresses = 'localhost'

listen_addresses — задаёт адреса TCP/IP, через которые сервер будет принимать подключения клиентских приложений. Это значение принимает форму списка, разделённого запятыми, из имён и/или числовых IP-адресов компьютеров. * — обозначает все имеющиеся IP-интерфейсы. 0.0.0.0 — обозначает все имеющиеся адреса IPv4. :: — обозначает все имеющиеся адреса IPv6.

Добавим IP адрес сетевого интерфейса, с которого надо принимать сетевые подключения:

listen_addresses = 'localhost,192.168.56.112'

Или разрешим принимать подключения клиентских приложений через все имеющиеся IP-интерфейсы сервера:

listen_addresses = '*'

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

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

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

host    all             all             192.168.56.0/24         md5

где 192.168.56.0/24 — это наша локальная сеть (у вас будет другая).

Если требуется, чтобы PostgreSQL принимал подключение со всех без исключения IP-адресов, то прописываем следующее:

# IPv4 local connections:
host    all             all             0.0.0.0/0            md5

# IPv6 local connections:
host    all             all             ::/0            md5

Перезапускаем PostgreSQL:

systemctl restart postgresql

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

По умолчанию в RHEL многие порты закрыты брандмауэром. Откроем в брандмауэре доступ для PostgreSQL на подключение выполнив следующие команды:

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

Теперь мы можем подключиться к PostgreSQL.