C Red Hat Enterprise Linux (RHEL) столкнулся совсем недавно, так как появилась необходимость развернуть специализированное ПО именно на этой версии операционной системе. Ранее работал с CentOS, которая основана на RHEL, поэтому проблем с RHEL не возникло. В данной статье будет описан процесс установки PostgreSQL на Red Hat Enterprise Linux 8.
PostgreSQL 10 включён в репозитории RHEL 8, для его установки выполним команду:
dnf install @postgresql
Если установку производите не под учётной записью администратора, то в терминале вначале всех команд прописываем команду sudo. Пример: sudo dnf install @postgresql
Можно переключиться на учётную запись root, устанавливаем под ним всё необходимое и выходим из учётной записи root.
Инициализируем базу данных:
postgresql-setup --initdb
Запустим сервис PostgreSQL, включим его автоматический запуск при загрузке системы и проверим его состояние:
systemctl start postgresql
systemctl enable postgresql
systemctl status postgresql
Защитим учётную запись пользователя Postgres и учётную запись администратора. Создадим пароль для учётной записи postgres:
passwd postgres
Переключаемся на учётную запись postgres:
su - postgres
Защитим учётную запись пользователя администратора базы данных PostgreSQL задав надёжный пароль:
psql -c "ALTER USER postgres WITH PASSWORD 'tut_slojni_parol';"
Выходим из-под пользователя 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.