Установка PostgreSQL 12 на CentOS 8#

Установка пакетов#

sudo dnf module enable postgresql:12
sudo dnf install postgresql-server

Создание нового кластера баз данных PostgreSQL#

Шаг 1. Изменение расположения кластера БД по умолчанию#

Если будет использоваться место хранения по умолчанию /var/lib/pgsql/data/, то этот шаг нужно пропустить.

Будем использовать в качестве нового расположения кластера БД /mnt/storage/pgsql/data.

1.1. Создадим папку#

sudo mkdir /mnt/storage/pgsql
sudo chown postgres:postgres /mnt/storage/pgsql

1.2. Изменим место хранения по умолчанию#

sudo systemctl edit postgresql.service

В открывшемся редакторе вводим:

[Service]
Environment=PGDATA=/mnt/storage/pgsql/data

В результате создаётся файл /etc/systemd/system/postgresql.service.d/override.conf, который переопределяет только указанные нами параметры стандартного unit-файла. При обновлении пакетов, переустановке и т.п. данный файл сохраняется.

Hint

Дефолтный unit-файл находится в /usr/lib/systemd/system/postgresql.service. Редактировать его, как вы знаете, не следует.

Шаг 2. Инициализация кластера#

sudo postgresql-setup --initdb

Шаг 3. Разрешение подключений к базе извне#

3.1. postgresql.conf#

sudo vim /mnt/storage/pgsql/data/postgresql.conf
listen_addresses = '*'                 # what IP address(es) to listen on;
                                       # comma-separated list of addresses;
                                       # defaults to 'localhost'; use '*' for
all
                                       # (change requires restart)
...
...

password_encryption = scram-sha-256    # md5 or scram-sha-256

3.2. pg_hba.conf#

sudo vim /mnt/storage/pgsql/data/pg_hba.conf

Добавляем строки вида

host    all             all             100.64.0.160/27         scram-sha-256

Лучше вместо all-all указать конкретного пользователя и базу данных.

Лучше вместо password (cleartext) использовать один из разрешённых хешей.

Шаг 4. Автоматический запуск демона#

sudo systemctl enable --now postgresql.service

Администрирование#

По умолчанию при установке создаётся пользователь postgres без пароля, стать им можно только с помощью su/sudo:

sudo -iu postgres

Основные задачи по администрированию выполняются с помощью фронт-энда для cli:

psql

Hint

Можно сразу войти во фронт-энд:

sudo -iu postgres psql