Гид по технологиям

Установка и базовое использование PostgreSQL 15 на Rocky Linux 9

• 8 min read • Базы данных • Обновлено 21 Nov 2025
PostgreSQL 15 на Rocky Linux 9 — установка и введение
PostgreSQL 15 на Rocky Linux 9 — установка и введение

  • Кратко: установите официальный репозиторий PostgreSQL, установите пакет postgresql15-server, инициализируйте кластер, включите службу и настройте аутентификацию через pg_hba.conf (рекомендуется scram-sha-256). Этот гид показывает шаги от установки до создания пользователей, баз данных, таблиц, резервного копирования и базовой отладки.

Введение

логотип PostgreSQL

PostgreSQL — свободная реляционная СУБД с сильной ориентацией на расширяемость и соответствие SQL-стандартам. Это корпоративного уровня RDBMS, который поддерживает как SQL-запросы, так и работу с JSON. Сообщество развивает PostgreSQL более 20 лет; он широко используется в веб-, мобильных и аналитических приложениях.

Этот подробный материал проведёт вас через установку PostgreSQL 15 на сервере Rocky Linux 9 и покажет базовые приёмы: создание ролей и баз данных, работу с таблицами, вставку и выборку данных, резервное копирование и основные приёмы безопасности.

Важно: все команды в гайде предполагают, что у вас есть пользователь с sudo-привилегиями и SELinux установлен в режиме permissive (разрешающий). Если SELinux в enforcing, в разделе безопасности есть заметки по настройке.

Что вы получите из этого руководства

  • Пошаговая установка PostgreSQL 15 из официального репозитория.
  • Инициализация кластера, запуск и автозапуск службы.
  • Настройка аутентификации и шифрования паролей (scram-sha-256).
  • Создание ролей и баз данных, примеры DDL и DML.
  • Резервное копирование и восстановление (pg_dump/pg_restore).
  • Базовые операции обслуживания: VACUUM, ANALYZE.
  • Чек-листы и playbook для развертывания и отката.

Основные термины (в одну строку)

  • Роль: аккаунт в PostgreSQL, похож на пользователя или группу.
  • Кластер: набор баз данных, обслуживаемый одним экземпляром сервера PostgreSQL.
  • Служба: системный unit systemd, управляющий процессом postmaster.
  • pg_hba.conf: файл контроля доступа для клиентских соединений.

Предварительные требования

  • Сервер Rocky Linux 9 с сетевым доступом.
  • Пользователь с sudo.
  • SELinux в режиме permissive (или дополнительные настройки, если enforcing).
  • Свободное место и права для установки пакетов.

1. Добавление официального репозитория PostgreSQL

PostgreSQL 15 может отсутствовать в стандартном репозитории Rocky Linux. Используйте официальный репозиторий PostgreSQL для RHEL 9-совместимых дистрибутивов.

Выполните:

sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

После установки репозитория можно проверить список доступных репозиториев:

sudo dnf repolist

добавление репозитория PostgreSQL

список репозиториев

Совет: если у вас ограничённый доступ в интернет, скачайте rpm и перенесите его на сервер через SCP.

2. Установка PostgreSQL 15

Установите сервер и дополнительные contrib-модули:

sudo dnf install postgresql15-server postgresql15-contrib

Подтвердите импорт GPG-ключей репозитория, если будет запрос.

установка PostgreSQL 15

Инициализируйте базу данных (создание папки данных и начальной конфигурации):

sudo postgresql-15-setup initdb

Запустите и включите службу:

sudo systemctl start postgresql-15
sudo systemctl enable postgresql-15

Проверьте статус:

sudo systemctl status postgresql-15

инициализация и запуск PostgreSQL

проверка службы PostgreSQL

Если служба не запускается, проверьте журналы systemd:

sudo journalctl -u postgresql-15 --no-pager

Ищите ошибки о правах доступа к каталогу данных или конфликте портов (обычно 5432).

3. SELinux и брандмауэр

Если SELinux в режиме enforcing, проверьте метки для каталога данных и портов. Простейшая команда для установки метки порта (если меняли порт):

sudo semanage port -a -t postgresql_port_t -p tcp 5432

Если semanage отсутствует, установите policycoreutils-python-utils:

sudo dnf install -y policycoreutils-python-utils

Открытие порта в firewalld:

sudo firewall-cmd --add-service=postgresql --permanent
sudo firewall-cmd --reload

Если используете ufw или другой брандмауэр, настройте аналогично.

Важно: не оставляйте порт 5432 открытым в интернет без надёжной аутентификации и TLS.

4. Настройка аутентификации и шифрования паролей

По умолчанию PostgreSQL использует файл pg_hba.conf для контроля доступа. Вход в psql от системного пользователя postgres:

sudo -u postgres psql

Внутри psql проверьте расположение файла и текущую схему шифрования паролей:

SHOW hba_file;
SHOW password_encryption;

Вы увидите путь, обычно ‘/var/lib/pgsql/15/data/pg_hba.conf’, и метод шифрования (рекомендуется scram-sha-256).

показ расположения pg_hba.conf и шифрования паролей

Откройте файл для редактирования:

sudo nano /var/lib/pgsql/15/data/pg_hba.conf

Пример рекомендуемых строк для локальных соединений:

# Unix-сокеты
local   all             all                                     peer
# IPv4 локальные
host    all             all             127.0.0.1/32            scram-sha-256
# IPv6 локальные
host    all             all             ::1/128                 scram-sha-256

Сохраните и перезапустите сервер:

sudo systemctl restart postgresql-15

Проверка соединения по socket и по TCP (127.0.0.1):

sudo -u postgres psql
\conninfo
sudo -u postgres psql -U postgres -h 127.0.0.1
\conninfo

проверка соединения через

Примечание: peer означает, что PostgreSQL проверяет UNIX-пользователя ОС. Для удалённых подключений всегда используйте метод md5 или scram-sha-256; последний более безопасен.

5. Установка пароля пользователю postgres

Сначала задайте пароль для системного пользователя postgres (UNIX):

sudo passwd postgres

Затем внутри psql установите пароль для роли postgres (PostgreSQL-сущность):

sudo -u postgres psql
ALTER USER postgres WITH PASSWORD 'ваш_надёжный_пароль';
\q

Пример в оригинале использовал ‘p4ssw0rdPostgreSQL15’ — используйте уникальные и сложные пароли.

установка пароля для роли postgres

Подключитесь по TCP с указанием пользователя и хоста для проверки:

sudo -u postgres psql -U postgres -h 127.0.0.1

6. Создание новой роли и базы данных

Выполните вход как postgres:

sudo -u postgres psql

Создадим роль alice с правами создавать базы и роли:

CREATE USER alice WITH CREATEDB CREATEROLE PASSWORD 'p4ssw0rdAlice';

Создадим базы alice и testdb, владельцем назначим alice:

CREATE DATABASE alice OWNER alice;
CREATE DATABASE testdb OWNER alice;

Проверьте роли и базы:

\du
\l

создание ролей и баз данных

Подключение как alice (через 127.0.0.1):

sudo -u postgres psql -U alice -h 127.0.0.1
\conninfo

вход как alice

Совет: не давайте CREATEROLE большинству пользователей. Это высокая привилегия.

7. Создание таблицы и вставка данных

Подключившись к базе testdb как alice:

\connect testdb

Создадим таблицу users с простыми типами и первичным ключом:

CREATE TABLE users (
  id INT PRIMARY KEY NOT NULL,
  name TEXT NOT NULL,
  age INT NOT NULL,
  address CHAR(50),
  salary REAL
);

Проверьте таблицы:

\dt

создание таблицы 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;

проверка данных в таблице users

Совет: для автоинкремента используйте последовательности или тип SERIAL/IDENTITY (в новых версиях предпочтителен GENERATED AS IDENTITY).

Пример с IDENTITY:

CREATE TABLE users2 (
  id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
  name TEXT NOT NULL,
  age INT
);

8. Выборка и обновление данных

Примеры простых выборок:

SELECT name, age, salary FROM users;
SELECT * FROM users WHERE age > 30 ORDER BY salary DESC;

Обновление записи:

UPDATE users SET address = 'Sweden' WHERE name = 'Paul';

Проверка:

SELECT * FROM users;

обновление данных в таблице users

Удаление строки:

DELETE FROM users WHERE id = 2;

Транзакции:

BEGIN;
UPDATE users SET salary = salary * 1.05 WHERE id = 1;
-- если OK
COMMIT;
-- если нужно откатить
ROLLBACK;

9. Резервное копирование и восстановление

Логические дампы — быстрый способ резервного копирования баз данных:

  • Экспорт одной базы в файл:
sudo -u postgres pg_dump -F c -b -v -f /tmp/testdb.dump testdb
  • Восстановление из дампа:
sudo -u postgres pg_restore -d testdb -v /tmp/testdb.dump

Альтернатива: pg_dumpall для всех баз и ролей.

Физическое резервное копирование (file-system level) требует остановки сервера или использования basebackup:

sudo -u postgres pg_basebackup -D /var/lib/pgsql/15/basebackup -F tar -z -P

Совет: храните дампы за пределами сервера и регулярно тестируйте восстановление.

10. Обслуживание и производительность

Основные команды обслуживания:

VACUUM;           -- очистка мёртвых строк
VACUUM FULL;      -- освобождение места (блокирует таблицу)
ANALYZE;          -- обновление статистики оптимизатора
REINDEX;          -- восстановление индексов

Включите расширение pg_stat_statements для мониторинга запросов:

-- в postgresql.conf добавить в shared_preload_libraries = 'pg_stat_statements'
-- затем в базе:
CREATE EXTENSION pg_stat_statements;

Используйте EXPLAIN (ANALYZE) для анализа плана выполнения запроса:

EXPLAIN ANALYZE SELECT * FROM users WHERE age > 30;

11. Безопасность и жёсткая настройка

Рекомендации по безопасности:

  • Всегда используйте scram-sha-256 для паролей.
  • Включите TLS для удалённых подключений; настройте ssl_cert_file и ssl_key_file.
  • Ограничьте доступ по pg_hba.conf и firewall.
  • Отключите привилегированные роли для приложений; применяйте принцип наименьших привилегий.
  • Регулярно обновляйте PostgreSQL и ОС.

Пример строки для включения SSL в postgresql.conf:

ssl = on
ssl_cert_file = '/var/lib/pgsql/15/data/server.crt'
ssl_key_file = '/var/lib/pgsql/15/data/server.key'

Использование fail2ban и мониторинг попыток входа по логам тоже повышают безопасность.

12. Репликация и высокая доступность — краткий обзор

PostgreSQL поддерживает несколько подходов к HA и репликации:

  • Streaming replication (встроенная потоковая репликация).
  • Logical replication (копирование отдельных таблиц/данных).
  • Сторонние решения: Patroni, repmgr, PgBouncer, PgPool-II.

Этот гайд не покрывает настройку репликации в деталях, но для Production следует оценить: автоматическое failover (Patroni), прокси-пул соединений (PgBouncer) и хранение WAL-архивов.

13. Диагностика и распространённые ошибки

  • Служба не стартует: проверьте права каталога данных и SELinux метки.
  • Порт 5432 занят: используйте ss/netstat для поиска процесса.
sudo ss -ltnp | grep 5432
  • Ошибка аутентификации для 127.0.0.1: проверьте pg_hba.conf и убедитесь, что подключение идёт по нужному IP/методу.
  • “password authentication failed”: перепроверьте пароль и метод шифрования (scram-sha-256 требует совпадения).

Журналы PostgreSQL в каталоге данных (обычно /var/lib/pgsql/15/data/pg_log) и systemd — первичный источник информации.

14. Чек-листы и playbook для типового развертывания

Чек-лист администратора при установке PostgreSQL 15 на Rocky Linux 9:

  • Добавлен официальный репозиторий PostgreSQL.
  • Установлены пакеты postgresql15-server и contrib.
  • Выполнен postgresql-15-setup initdb.
  • Служба запущена и включена (systemctl enable –now).
  • Настроен firewall и SELinux (если нужен доступ извне).
  • Настроен pg_hba.conf: локально peer, tcp scram-sha-256.
  • Установлены пароли системного и DB-пользователя postgres.
  • Созданы необходимые роли и базы.
  • Настроено резервное копирование и проверено восстановление.

Playbook быстрого развертывания (шаблон действий):

  1. Установка репозитория и пакетов.
  2. Инициализация кластера.
  3. Настройка pg_hba.conf и postgresql.conf.
  4. Включение логирования и мониторинга.
  5. Создание пользователей и баз.
  6. Настройка резервного копирования.
  7. Тестовое восстановление.

Критерии приёмки

  • Сервер отвечает на psql подключение локально и по 127.0.0.1.
  • Роль postgres имеет установленный пароль.
  • Создана тестовая база и таблица с успешной вставкой/чтением данных.
  • Настроено ежедневное резервное копирование.

15. Тесты приёмки и примеры тест-кейсов

  • Подключение: выполнить psql -U postgres -h 127.0.0.1 и ожидать приглашения пароля.
  • CRUD: создать таблицу, вставить 3 строки, прочитать их, обновить одну запись, удалить одну запись.
  • Резервное копирование: создать дамп и восстановить его в пустую базу.
  • Производительность: EXPLAIN ANALYZE для простого запроса должен завершаться без ошибок.

16. Альтернативы и когда PostgreSQL может не подойти

Альтернативы: MySQL/MariaDB (широко распространены в веб), SQLite (встроенная, локальная), коммерческие СУБД (Oracle, MS SQL) в случаях специфических требований.

Когда PostgreSQL может не подойти:

  • Если нужен встроенный однопользовательский локальный файл без серверной части — тогда SQLite.
  • Если инфраструктура строго завязана на MySQL-экосистему и миграция дорогая.

17. Ментальные модели и рекомендации

  • Думайте о ролях как о комбинации операционной и SQL-идентичности. Разграничивайте Unix-пользователей и PostgreSQL-ролей.
  • Применяйте принцип наименьших привилегий: приложения получают минимальный набор прав.
  • Резервное копирование и тестовое восстановление важнее частоты снятия дампов.

18. Шаблон командной витрины (cheat sheet)

# Службы
sudo systemctl start|stop|restart|status postgresql-15
# Инициализация
sudo postgresql-15-setup initdb
# Вход в psql
sudo -u postgres psql
sudo -u postgres psql -U alice -h 127.0.0.1
# Списки
\du     -- роли
\l      -- базы
\dt     -- таблицы
# Резервное копирование
pg_dump -F c -b -v -f /tmp/db.dump dbname
pg_restore -d dbname /tmp/db.dump
# VACUUM
VACUUM;
ANALYZE;

19. Советы по миграции с более ранних версий

  • Всегда проверяйте совместимость SQL и расширений. Некоторые расширения могут требовать обновления.
  • Тестируйте pg_upgrade или используйте logical dump/restore при переходе между крупными версиями.
  • Проверьте пути к данным и владельцев файлов после апгрейда.

20. Очистка окружения

Если вы создавали тестовые таблицы, базы и роли в ходе работы, удалите их:

sudo -u postgres psql
\connect testdb
DROP TABLE users;
\connect postgres
DROP DATABASE alice;
DROP DATABASE testdb;
DROP USER alice;
\du

удаление таблицы users

21. Краткое резюме

PostgreSQL 15 можно установить на Rocky Linux 9 из официального репозитория. После установки важно инициализировать кластер, настроить pg_hba.conf для безопасных методов аутентификации, задать пароли, создать роли и базы данных и настроить резервное копирование. Для продакшена добавьте мониторинг, TLS и решение для высокой доступности.

Важно: регулярно тестируйте восстановление из резервных копий и не принимайте дефолтные пароли в рабочей среде.

Ресурсы для дальнейшего изучения

  • Официальная документация PostgreSQL (postgresql.org)
  • Руководства по безопасности и настройке производительности
  • Расширения: pg_stat_statements, pgaudit, PostGIS (если нужны геоданные)

Краткое окончание

Вы успешно прошли пошаговый путь от установки PostgreSQL 15 на Rocky Linux 9 до базовых операций с базой данных. Далее рекомендуем изучать расширения, настройку репликации и автоматизацию резервного копирования для Production-сред.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро