Установка PostgreSQL на CentOS

PostgreSQL — надёжная и масштабируемая реляционная СУБД, которая работает в Linux и Windows. Она подходит для приложений от одного сервера до хранилищ данных уровня предприятия. PostgreSQL поддерживает транзакции с ACID, обновляемые представления, внешние ключи и интеграции с другими системами.
В этом материале вы найдёте упрощённые шаги установки на CentOS, примеры команд, рекомендации по безопасности, варианты миграции и проверки приёмки. Все команды приведены в виде командной строки для пользователя с привилегиями sudo или root.
Что важно знать заранее
- CentOS может потребовать входа под root для администрирования. Команда su переключит вас в root. Определение: ACID — набор свойств транзакций (атомарность, согласованность, изоляция, устойчивость).
- В CentOS версии потоков модулей dnf управляют версиями PostgreSQL.
- После установки нужно инициализировать кластер данных и запустить сервис.
Important: в продакшн-средах прежде чем открывать удалённый доступ настройте аутентификацию и бэкапы.
Содержание (быстрый план)
- Подготовка системы
- Выбор и включение версии PostgreSQL
- Установка, инициализация и автозапуск
- Создание ролей, баз и таблиц
- Добавление данных
- Базовая безопасность и оперативные советы
- Чеклисты для ролей: администратор, разработчик, оператор
- Критерии приёмки, тесты и откат
- Миграция и совместимость
- Сниппеты и шпаргалка
Подготовка: обновление пакетов и перезагрузка
На CentOS сначала обновите список пакетов и сами пакеты. Если вы не в root, используйте sudo.
sudo yum check-update
sudo yum update
sudo rebootПосле перезагрузки система будет с обновлёнными пакетами и готова к установке PostgreSQL.
Вывод команды check-update обычно показывает список пакетов, требующих обновления. Если вы работаете на минимальном образе, убедитесь, что сеть и репозитории доступны.

Проверка доступных версий PostgreSQL и включение нужной версии
Проверьте модули PostgreSQL в dnf:
dnf module list postgresqlПо умолчанию установится версия, помеченная как default (чаще это 10 или другая версия в старых дистрибутивах). Чтобы использовать конкретную версию (например, 13), включите её модуль:
sudo dnf module enable postgresql:13Если на вашем хосте доступна более новая версия, рассмотрите её в тестовой среде перед выпуском в продакшн.
Установка сервера PostgreSQL и инициализация кластера
Установите пакет сервера (и клиента):
sudo dnf install postgresql-serverИнициализируйте базу данных (создаст каталог данных и системные таблицы):
postgresql-setup --initdbВключите автозапуск и запустите сервис:
sudo systemctl enable postgresql
sudo systemctl start postgresql
sudo systemctl status postgresqlЕсли systemctl показывает Active, сервис запущен и готов принимать подключения.
Базовая настройка после установки
- Установите пароль для системного пользователя postgres:
passwd postgresСистема запросит пароль дважды. Затем переключитесь на юзера postgres:
su - postgres- Основные файлы конфигурации находятся в каталоге данных (обычно /var/lib/pgsql/data или /var/lib/pgsql/13/data). Важные файлы:
- postgresql.conf — глобальные параметры сервера (слушать адреса, параметры памяти, логирование);
- pg_hba.conf — правила аутентификации клиентов (задаёт метод аутентификации и сети);
- pg_ident.conf — необязательно, для сопоставления системных и Postgres-ролей.
- После изменений в конфигурации перезапустите сервис:
sudo systemctl restart postgresqlСоздание ролей и пользователей
PostgreSQL использует роли. Роль может быть пользователем или группой прав. Создавать роли можно из-под системного postgres или через sudo.
# интерактивно — спросит имя роли и выдачу суперправа
createuser --interactive
# или с sudo
sudo -u postgres createuser --interactiveСистема спросит: имя роли и будет ли она суперпользователем. Для большинства приложений создавайте роль без суперправ и назначайте конкретные привилегии.
Встроенная справка:
man createuserСоздание баз данных и таблиц
Создайте системного пользователя ОС, совпадающего с именем роли, или используйте psql с указанием роли.
sudo adduser test
sudo -i -u test
createdb databasenameЕсли роль совпадает с именем пользователя ОС, createdb создаст базу быстро.
Пример создания таблицы через SQL-подсистему psql:
CREATE TABLE table_name (
column_name1 col_type(field_length),
column_name2 col_type(field_length),
column_name3 col_type(field_length)
);Пример таблицы hotel:
CREATE TABLE hotel (
hotel_id serial PRIMARY KEY,
star varchar(50) NOT NULL,
paint varchar(25) NOT NULL,
location varchar(25) CHECK (location IN ('north','south','west','east','northeast','southeast','southwest','northwest')),
date date
);Добавление данных:
INSERT INTO hotel (hotel_id, star, paint, location, date) VALUES (DEFAULT, 'Five', 'Blue', 'northwest', '2018-08-16');Обратите внимание: serial генерирует последовательность для первичного ключа.
Бэкапы и восстановление (основы)
Резервное копирование примитивно выполняется утилитой pg_dump, а восстановление — pg_restore или psql в зависимости от формата.
# Дамп одной базы в SQL-скрипт
sudo -u postgres pg_dump databasename > databasename.sql
# Восстановление
sudo -u postgres psql databasename < databasename.sql
# Дамп в tar/архивный формат
sudo -u postgres pg_dump -Fc databasename -f databasename.dump
# Восстановление
sudo -u postgres pg_restore -d databasename databasename.dumpПланируйте регулярные бэкапы и проверяйте восстановление в тестовой среде.
Базовая безопасность и hardening
- Настройте pg_hba.conf: используйте md5/peer/local для внутренних соединений и scram-sha-256 (если поддерживается) для паролей.
- По возможности используйте непубличные сети, VPN или TLS для удалённого доступа.
- Ограничьте привилегии ролей: меньше прав — меньше риска.
- Установите регулярные обновления пакетов и мониторьте уязвимости.
- Ограничьте доступ к каталогу данных (обычно владелец postgres, права 700).
Пример строки в pg_hba.conf для локальных подключений по паролю:
# TYPE DATABASE USER ADDRESS METHOD
host all all 10.0.0.0/24 md5Для включения SSL укажите пути к сертификатам в postgresql.conf и перезапустите сервис.
Технические сценарии: когда этот подход не подходит
- Если нужна управляемая облачная СУБД (RDS/Azure Database/Cloud SQL), установка на CentOS может быть лишней.
- Для высоконагруженных OLAP-решений может потребоваться тонкая настройка памяти/IO и репликации.
Альтернативы: использовать контейнеры (Docker), Helm-чарты в Kubernetes, или RPM-пакеты из сторонних репозиториев, если требуется более свежая версия.
Чеклисты и роли
Чеклист для администратора БД:
- Обновить систему и установить пакет postgresql-server
- Инициализировать кластер и включить автозапуск
- Настроить pg_hba.conf и postgresql.conf (логирование, listen_addresses)
- Настроить бэкапы и проверку восстановления
- Настроить мониторинг SLI (доступность, задержки запросов) и оповещения
Чеклист для DevOps/оператора:
- Автоматизировать установку пакета (Ansible/Terraform)
- Централизовать логи и метрики
- Тестировать обновления версии на стенде
Чеклист для разработчика:
- Создать локальную роль и базу
- Тестировать схемы и миграции (pg_dump/pg_restore)
- Писать миграции idempotent
Критерии приёмки
- PostgreSQL запускается и имеет статус Active
- Можно подключиться под созданной ролью и выполнить простой SELECT
- Бэкап и восстановление прошли успешно в тесте
- Правила pg_hba.conf обеспечивают требуемый уровень доступа
- Производительность соответствует базовому SLA (латентность и успешные транзакции)
Тесты и случаи использования (acceptance)
- Инсталляция: пакет установлен, служба запущена, каталог данных инициализирован.
- Аутентификация: вход под созданной ролью возможен; неправильный пароль не допускается.
- CRUD: создать таблицу, вставить запись, прочитать её, обновить и удалить.
- Бэкап/восстановление: дамп и восстановление возвращают ту же структуру и данные.
- Права: роль без суперправа не может выполнить ALTER SYSTEM или изменить конфиги.
Откат (rollback) при проблемах
- Если после обновления пакетов сервер не запускается — проверьте логи journalctl -u postgresql и откатите пакет через менеджер пакетов или восстановите конфигурацию из бэкапа.
- Если конфигурация postgresql.conf привела к ошибке — восстановите предыдущую версию файла и перезапустите сервис.
- Для критических проблем используйте аварийный старт в безопасном режиме (временная модификация файлов конфигов и прав).
Миграция и совместимость
- При переходе между мажорными версиями PostgreSQL используйте pg_dump/pg_restore или инструменты pg_upgrade.
- Для миграции на дистрибутивы, совместимые с CentOS (Rocky Linux, AlmaLinux), пути и команды будут аналогичны.
- Тщательно протестируйте приложения на тестовой ветке перед миграцией продакшн-данных.
Совместимость и примечания по версиям
- Обновления мажорных версий требуют специальной процедуры миграции. minor-апдейты обычно безопасны и включают исправления безопасности.
- Если вы используете расширения (PostGIS, PL/pgSQL, pg_stat_statements и т. п.), проверьте их совместимость с целевой версией PostgreSQL.
Шпаргалка команд (cheat sheet)
- Установка: sudo dnf install postgresql-server
- Инициализация: postgresql-setup –initdb
- Управление сервисом: sudo systemctl start|stop|restart|status postgresql
- Создание роли: sudo -u postgres createuser –interactive
- Создание базы: sudo -u postgres createdb mydb
- Подключение: sudo -u postgres psql mydb
- Дамп: sudo -u postgres pg_dump mydb > mydb.sql
- Восстановление: sudo -u postgres psql mydb < mydb.sql
Пример: минимальный playbook (Ansible) — шаблон
- hosts: db
become: true
tasks:
- name: Установить PostgreSQL
dnf:
name: postgresql-server
state: present
- name: Инициализировать кластер
command: postgresql-setup --initdb
args:
creates: /var/lib/pgsql/data/PG_VERSION
- name: Включить и запустить сервис
systemd:
name: postgresql
enabled: yes
state: startedИспользуйте этот шаблон как отправную точку и адаптируйте для конкретной версии и окружения.
Безопасность данных и GDPR (коротко)
Если ваша база содержит персональные данные, применяйте следующие практики:
- Шифруйте резервные копии и ограничьте к ним доступ;
- Логируйте доступ и запросы с чувствительными данными;
- Минимизируйте хранение персональных данных и определите сроки хранения;
- Реализуйте контроль доступа на уровне ролей и сетей.
Юридические требования и точные меры зависят от юрисдикции. Консультируйтесь с юристом по защите данных.
Troubleshooting: распространённые ошибки и быстрые проверки
- Порт 5432 занят: проверьте netstat/ss и измените listen_addresses/port в postgresql.conf.
- Ошибка аутентификации: проверьте pg_hba.conf и перезапустите сервис.
- Невозможно инициализировать кластер: проверьте права на каталог данных и свободное место на диске.
- Проблемы при запуске после обновления: смотрите логи systemctl и journalctl, проверьте совместимость расширений.
Короткий глоссарий (1 строка для каждого термина)
- Роль: сущность, которой присваиваются привилегии в PostgreSQL; может быть пользователем или группой.
- Кластер данных: набор баз данных, управляемых одним экземпляром сервера PostgreSQL.
- pg_hba.conf: файл, определяющий правила аутентификации клиентов.
- pg_dump: утилита для резервного копирования одной базы в SQL или архивах.
Итог и рекомендации
- Для небольших проектов достаточно стандартной установки и базовой настройки pg_hba.conf.
- Для продакшн — автоматизация установки, регулярные бэкапы, мониторинг и тестируемые миграции.
- Всегда проверяйте восстановление бэкапа и тестируйте обновления на стенде.
Summary:
- PostgreSQL легко установить на CentOS через dnf, но требуется инициализация кластера и настройка автозапуска.
- Создавайте роли с минимальными привилегиями и автоматизируйте бэкапы.
- Планируйте миграции между мажорными версиями и проверяйте совместимость расширений.
Short announcement (100–200 слов):
Установить PostgreSQL на CentOS просто: обновите пакеты, включите нужную модуль-версию, установите postgresql-server, инициализируйте кластер и включите сервис. После этого создайте роли и базы, настройте pg_hba.conf для безопасной аутентификации и настройте регулярные резервные копии. Для продакшна рекомендуем автоматизировать установку (Ansible), включить мониторинг и протестировать процедуру восстановления. В статье приведены команды, шаблон playbook, чеклисты для админа и разработчика, а также советы по безопасности и миграции.
Похожие материалы
Запись и трансляция рабочего стола в VLC
EXPAND в Excel — расширение массивов и примеры
Как установить пользовательский шрифт на Kindle
Пропала адресная строка в Chrome — как вернуть
Age of Empires 2 в Windows 10/11 — как запустить