PostgreSQL
PostgreSQL — свободная объектно-реляционная система управления базами данных. Обновления для этой ветки будут выходить в течение пяти лет до ноября 2025 года.
Установка PostgreSQL 13
Добавляем репозиторий PostgreSQL
$ sudo dnf -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Отключаем модуль PostgreSQL в предустановленно по-умолчанию репозитории AppStream
$ sudo dnf -qy module disable postgresql
Проверяем
$ sudo dnf module list | grep postgresql
postgresql 9.6 [x] client, server [d] PostgreSQL server and client module
postgresql 10 [d][x] client, server [d] PostgreSQL server and client module
postgresql 12 [x] client, server [d] PostgreSQL server and client module
Устанавливаем PostgreSQL 13
Selectel — ведущий провайдер облачной инфраструктуры и услуг дата-центров
Компания занимает лидирующие позиции на рынке на рынке выделенных серверов и приватных облаков, и входит в топ-3 крупнейших операторов дата-центров в России.
$ sudo dnf -y install postgresql13 postgresql13-server
Инициализируем базу
$ sudo /usr/pgsql-13/bin/postgresql-13-setup initdb
Initializing database … OK
Основной конфиг PostgreSQL расположен тут: /var/lib/pgsql/13/data/postgresql.conf
$ ls /var/lib/pgsql/13/data/
base pg_commit_ts pg_ident.conf pg_notify pg_snapshots pg_subtrans PG_VERSION postgresql.auto.conf
global pg_dynshmem pg_logical pg_replslot pg_stat pg_tblspc pg_wal postgresql.conf
log pg_hba.conf pg_multixact pg_serial pg_stat_tmp pg_twophase pg_xact
Запускаем PostgreSQL и добавляем сервис в автозагрузку
$ sudo systemctl enable --now postgresql-13
Проверяем статус
$ systemctl status postgresql-13
Устанавливаем пароль для пользователя postgres
$ sudo su - postgres
$ psql -c "alter user postgres with password 'StrongDBPassword'"
ALTER ROLE
$ exit
Работа с базой / польователями
Переключаемся на пользователя postgres
$ sudo su - postgres
Создаем пользователя БД
$ createuser userdb
Переключаемся в PostgreSQL shell
$ psql
Задаем пароль для пользователя БД
=# ALTER USER userdb WITH ENCRYPTED password 'aaayoupasswdaaa';
Создам базу и задаем владельца базы
=# CREATE DATABASE mybase WITH ENCODING='UTF8' OWNER=userdb;
=# \q
$ exit
Настройка PostgreSQL 13
Настраиваем возможность подключения к БД из др. хоста. Для этого редактируем конфигурационный файл /var/lib/pgsql/13/data/postgresql.conf и устанавливаем в качестве параметра Listen address ip-адрес сервера, или “*” – для всех сетевых интерфейсов
$ sudo nano /var/lib/pgsql/13/data/postgresql.conf
[…]
listen_addresses = '192.168.11.200'
[…]
Настраиваем параметры авторизации
$ sudo nano /var/lib/pgsql/13/data/pg_hba.conf
[…]
# Accept from trusted subnet
host all all 192.168.11.0/24 md5
[…]
Перезапускаем PostgreSQL
$ sudo systemctl restart postgresql-13
Тестируем подключение
$ sudo su - postgres
$ psql -U <dbuser> -h <serverip> -p 5432 <dbname>
Настройка Firewall
Открываем порт 5432
$ sudo firewall-cmd --zone=public --add-port=5432/tcp --permanent
$ sudo firewall-cmd --reload