Установка и базовая настройка PostgreSQL 13 на Rocky Linux

PostgreSQL — это свободная и открытая система управления базами данных с акцентом на расширяемость и соответствие стандарта SQL. Это совершенная корпоративная реляционная СУБД, которая также поддерживает хранение и запросы JSON. За более чем 20 лет разработки сообщество сделало PostgreSQL устойчивой, гибкой и функционально насыщенной платформой, которой доверяют разработчики и администраторы.
В этом руководстве вы научитесь: добавлять официальный репозиторий PostgreSQL для Rocky Linux, устанавливать PostgreSQL 13, инициализировать кластер, включать службу, улучшать безопасность через смену аутентификации на scram-sha-256, создавать пользователей и базы, работать с таблицами и данными. В конце — советы по отладке, резервному копированию и эксплуатационным процедурам.
Основные варианты поиска (SEO):
- Установка PostgreSQL на Rocky Linux
- PostgreSQL 13 Rocky Linux установка
- Как включить scram-sha-256 в PostgreSQL
- Создать пользователя и базу PostgreSQL
Предпосылки
- Сервер с Rocky Linux. Подходит версия 8 и совместимые сборки EL8.
- Пользователь с правами root или sudo. Он будет использоваться для установки пакетов и системных изменений.
Важно: работайте в безопасной среде по умолчанию. На продуктиве заранее продумайте бэкапы и доступы.
Добавление репозитория PostgreSQL
Для установки стабильной версии PostgreSQL 13.4 используйте официальный репозиторий PostgreSQL. Это гарантирует, что пакеты и обновления будут поступать от команды PostgreSQL.
- Добавьте репозиторий с помощью команды:
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm- Проверьте список репозиториев:
sudo dnf -qy repolistЕсли репозиторий добавлен, вы увидите строки с именами репозиториев PostgreSQL.

Установка PostgreSQL 13 на Rocky Linux
По умолчанию в Rocky Linux включён модуль PostgreSQL. Чтобы установить пакет из официального репозитория, сначала отключите модуль и затем установите пакет postgresql13-server.
- Отключите встроенный модуль PostgreSQL:
sudo dnf module -qy disable postgresqlПояснение: ключи -qy запускают dnf в тихом режиме и автоматически подтверждают ключи GPG.

- Установите сервер PostgreSQL 13:
sudo dnf install postgresql13-serverПодтвердите установку, введя y, если будет запрос. Затем дождитесь завершения установки.

Инициализация базы данных и запуск службы
После установки нужно инициализировать кластер данных, запустить и включить службу, чтобы PostgreSQL стартовал автоматически.
- Инициализация кластера данных:
sudo /usr/pgsql-13/bin/postgresql-13-setup initdb- Включение и запуск службы:
sudo systemctl enable postgresql-13
sudo systemctl start postgresql-13- Проверка статуса:
sudo systemctl status postgresql-13Если служба активна, вы увидите статус active (running). В противном случае — failed и логи, которые помогут в диагностике.

Минимальная защита установки
При установке создаётся системный пользователь и одноимённый пользователь базы данных postgres. Для безопасности задайте надёжный пароль для системного пользователя и для учётной записи в самой базе.
- Смените пароль системного пользователя postgres:
passwd postgresВведите новый пароль — используйте менеджер паролей и генерируйте случайные пароли достаточной длины.
- Смените пароль пользователя базы данных postgres. Сначала переключитесь на системного пользователя postgres и запустите psql:
su - postgres
psqlВнутри psql выполните:
ALTER USER postgres WITH PASSWORD 'strongpostgrespassword';Затем выйдите из оболочки psql по Ctrl+D или командой \q.

Совет: избегайте хранения паролей в конфигурационных файлах в виде plain text. Для автоматизации используйте секретные хранилища.
Смена метода аутентификации на scram-sha-256
По умолчанию локальные соединения могут использовать peer-аутентификацию. В продакшене рекомендуется парольная аутентификация с шифрованием паролей — scram-sha-256.
- Проверьте расположение pg_hba.conf и текущий метод шифрования паролей:
sudo -u postgres psql
SHOW hba_file;
SHOW password_encryption;
\qОбычно файл находится в /var/lib/pgsql/13/data, а default password_encryption для сборок RHEL-подобных — scram-sha-256.

- Отредактируйте файл pg_hba.conf:
cd /var/lib/pgsql/13/data/
nano pg_hba.confВнизу замените правила для локальных подключений на scram-sha-256:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all scram-sha-256
# IPv4 local connections:
host all all 127.0.0.1/32 scram-sha-256
# IPv6 local connections:
host all all ::1/128 scram-sha-256Сохраните и выйдите (Ctrl+X, Y, Enter).
- Примените изменения перезапуском службы:
sudo systemctl restart postgresql-13- Проверьте вход в psql с запросом пароля:
su - postgres
psqlВас попросят пароль для пользователя postgres. Если пароль правильный — вы попадёте в оболочку. Иначе увидите FATAL и сообщение об ошибке.

Альтернативный способ входа:
# Войти как postgres
sudo -u postgres psql
# Войти как другой пользователь
sudo -u postgres psql -U username
Примечание: если вы применяете scram-sha-256, убедитесь, что все клиенты PostgreSQL поддерживают этот метод. Старые клиенты и драйверы могут требовать md5.
Создание пользователя и базы для приложения
Далее создадим служебного пользователя и базу данных для приложения.
- Войдите в psql от имени postgres:
sudo -u postgres psql- Создайте пользователя johndoe с правами создавать базы и роли, и с паролем:
CREATE USER johndoe WITH
CREATEDB
CREATEROLE
PASSWORD 'johndoestrongpassword';Проверьте созданных пользователей:
\du
- Создайте базу данных и назначьте владельца:
CREATE DATABASE johndoe OWNER johndoe;Проверьте список баз данных:
\l

Создание таблицы и работа с данными
- Войдите в psql под пользователем johndoe:
su - postgres
psql -U johndoeИли однострочно:
sudo -u postgres psql -U johndoeВведите пароль для пользователя johndoe.

- Создайте таблицу users:
CREATE TABLE users (
id INT PRIMARY KEY NOT NULL,
name TEXT NOT NULL,
age INT NOT NULL,
address CHAR(50),
salary REAL
);Посмотреть таблицы:
\dПосмотреть столбцы таблицы:
\d users
- Вставьте данные:
INSERT INTO users (id,name,age,address,salary) VALUES (1, 'Paul', 32, 'California', 20000.00);
INSERT INTO users (id,name,age,address,salary) VALUES (2, 'Jesse', 35, 'Mexico', 30000.00);
INSERT INTO users (id,name,age,address,salary) VALUES (3, 'Linda', 27, 'Canada', 40000.00);- Выведите все строки:
SELECT * FROM users;Или только нужные столбцы:
SELECT name,age,salary FROM users;
Рекомендации по безопасности и hardening
Важно обеспечить устойчивость и безопасность сервера БД. Ниже — практические рекомендации.
- Обновления и патчи: регулярно применяйте обновления пакетов от PostgreSQL и системы.
- Сеть: ограничьте доступ на уровне фаервола (firewalld/iptables) только для доверенных хостов.
- Шифрование: используйте scram-sha-256 для паролей и TLS для клиентских подключений.
- Резервные копии: настройте регулярные бэкапы (pg_dump, pg_basebackup, WAL-архивирование).
- Привилегии: назначайте минимально необходимые права ролям.
- Мониторинг: собирайте метрики и логи (pg_stat_statements, Prometheus exporter).
- Логи: храните логи в централизованном хранилище для аудита.
Пример настройки SSL для PostgreSQL (кратко):
- Сгенерируйте сертификаты и ключи.
- Поместите их в /var/lib/pgsql/13/data и задайте права 600 на ключ.
- В postgresql.conf включите ssl = on и укажите пути ssl_cert_file и ssl_key_file.
Критично: тестируйте конфигурацию на стенде перед применением в продуктиве.
Бэкап и восстановление — краткая методика
Выбор метода зависит от требований к RTO/RPO.
- Logical backup (pg_dump): удобно для отдельных баз и переносов версий. Лёгкий и читаемый формат.
- Physical backup (pg_basebackup + WAL): пригоден для быстрого восстановления всего кластера и настройки реплики.
Примеры команд:
Полный дамп базы:
sudo -u postgres pg_dump -Fc johndoe > /var/backups/johndoe.dumpВосстановление:
sudo -u postgres pg_restore -d johndoe /var/backups/johndoe.dumpПолный бэкап кластера с помощью pg_basebackup:
sudo -u postgres pg_basebackup -D /backup/pg13 -F tar -z -PОтладка и диагностика — быстрые шаги
Если служба не запускается:
- Проверка статуса systemd:
sudo systemctl status postgresql-13- Просмотр служебных логов:
sudo journalctl -u postgresql-13 --no-pager- Проверка логов PostgreSQL в каталоге данных (/var/lib/pgsql/13/data/pg_log).
- Проверка прав на файлы ключей (если включён SSL).
- Проверка свободного места на диске и прав на каталог данных.
Частые ошибки:
- Неверные права на каталог данных или ключи SSL.
- Неправильный формат строки в pg_hba.conf.
- Клиент не поддерживает scram-sha-256.
Миграция и совместимость
Если вы мигрируете с другой СУБД или версии PostgreSQL:
- Для межверсий используйте pg_dump/pg_restore или logical replication.
- Для простых переносов между серверами той же версии — используйте pg_basebackup или rsync при остановленной службе.
- Проверьте совместимость своих приложений и драйверов с новым методом аутентификации и версией сервера.
Критерии приёмки
Перед сдачей инфраструктуры убедитесь, что:
- Служба postgresql-13 запущена и enabled.
- pg_hba.conf настроен и применён (scram-sha-256 при необходимости).
- Пароли для системного и базового пользователей заданы и безопасно сохранены.
- Созданы пользователь и база, приложение может подключиться и выполнить простые запросы.
- Настроены регулярные бэкапы и проверено восстановление хотя бы на тестовом экземпляре.
Ролевые чеклисты
Администратор сервера:
- Установить пакет postgresql13-server.
- Инициализировать кластер и включить службу.
- Настроить файервол и SELinux, если требуется.
Администратор БД:
- Изменить метод аутентификации на scram-sha-256.
- Создать пользователей и роли с минимальными правами.
- Настроить схему бэкапов и тестовое восстановление.
Разработчик приложения:
- Проверить драйвер на поддержку scram-sha-256.
- Протестировать подключение с учётными данными новой БД.
- Выполнить простые CRUD-операции и запросы производительности.
План действий при инциденте (runbook)
- Симптом: БД недоступна для приложений.
- Сбор информации: systemctl status, journalctl, проверка диска.
- Быстрая проверка: доступность порта 5432 с хоста приложения.
- Временное восстановление: запустить standby/replica если настроено.
- При необходимости — восстановить последнюю проверенную резервную копию на изолированном хосте.
- После восстановления — воспроизвести причину инцидента, скорректировать процедуры и задать план профилактики.
Тесты и критерии приёмки
- Тест 1: Установка пакета завершается без ошибок.
- Тест 2: Служба запускается и остаётся в состоянии active через 1 минуту.
- Тест 3: Пользователь johndoe может подключиться и выполнить SELECT 3 строк в таблице users.
- Тест 4: Восстановление дампа создает рабочую базу с теми же данными.
Критерий приёмки: все тесты должны проходить на тестовой среде и быть документированы.
Частые ошибки и когда предложенные шаги не подходят
- Если у вас распределённый кластер с репликацией или Patroni — инициализация и управление службами отличаются. В таких случаях используйте встроенные инструменты кластера.
- Если клиенты старые и не поддерживают scram-sha-256, переход на этот метод приведёт к отказам подключения. Для таких клиентов используйте md5 или обновите драйверы.
- На системах с кастомными путями данных команды и пути к pg_hba.conf могут отличаться.
Небольшой справочник по командам (cheat sheet)
- Установить репозиторий: dnf install https://download.postgresql.org/…
- Отключить модуль: dnf module -qy disable postgresql
- Установить server: dnf install postgresql13-server
- Инициализировать: /usr/pgsql-13/bin/postgresql-13-setup initdb
- Управление службой: systemctl start|stop|restart|status postgresql-13
- Войти в psql: sudo -u postgres psql
- Создать пользователя: CREATE USER name WITH PASSWORD ‘pwd’;
- Создать базу: CREATE DATABASE name OWNER name;
- Дамп базы: pg_dump -Fc dbname > file.dump
- Восстановление: pg_restore -d dbname file.dump
Факт-бокс: ключевые пункты
- Версия: PostgreSQL 13 (в примерах — 13.4). Используйте стабильную ветку на момент установки.
- Местоположение данных: /var/lib/pgsql/13/data
- Файл конфигурации аутентификации: pg_hba.conf
- Рекомендуемый метод паролей: scram-sha-256
- Простой метод бэкапа: pg_dump (логический), pg_basebackup (физический)
Краткое резюме
Вы научились добавлять официальный репозиторий PostgreSQL, устанавливать PostgreSQL 13 из него, инициализировать и запускать службу, переводить аутентификацию на scram-sha-256, создавать пользователей и базы данных, а также выполнять базовые операции с таблицами и данными. Дополнительно приведены рекомендации по безопасности, бэкапам, отладке и чеклисты для ролей.
Важно: перед применением настроек в продуктиве проверьте совместимость клиентов и наличие процесса восстановления по бэкапам.
Содержание для социальных сетей
OG текст для соцсетей и превью: PostgreSQL 13 на Rocky Linux — быстрый старт: установка, безопасность, scram-sha-256, создание пользователя и базы, бэкапы и отладка.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента