Установка PostgreSQL 12 на CentOS 8
Содержание
Установка 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