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

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

8 min read Базы данных Обновлено 06 Dec 2025
Установка PostgreSQL на CentOS
Установка PostgreSQL на CentOS

Изображение: установка 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 обычно показывает список пакетов, требующих обновления. Если вы работаете на минимальном образе, убедитесь, что сеть и репозитории доступны.

Вывод: обновление пакетов в CentOS

Проверка доступных версий PostgreSQL и включение нужной версии

Проверьте модули PostgreSQL в dnf:

dnf module list postgresql

По умолчанию установится версия, помеченная как default (чаще это 10 или другая версия в старых дистрибутивах). Чтобы использовать конкретную версию (например, 13), включите её модуль:

sudo dnf module enable postgresql:13

Включение модуля PostgreSQL 13

Если на вашем хосте доступна более новая версия, рассмотрите её в тестовой среде перед выпуском в продакшн.

Установка сервера PostgreSQL и инициализация кластера

Установите пакет сервера (и клиента):

sudo dnf install postgresql-server

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

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

postgresql-setup --initdb

Инициализация базы данных PostgreSQL

Включите автозапуск и запустите сервис:

sudo systemctl enable postgresql
sudo systemctl start postgresql
sudo systemctl status postgresql

Если systemctl показывает Active, сервис запущен и готов принимать подключения.

Активация и запуск PostgreSQL

Базовая настройка после установки

  1. Установите пароль для системного пользователя postgres:
passwd postgres

Система запросит пароль дважды. Затем переключитесь на юзера postgres:

su - postgres

Смена пароля системного пользователя postgres

  1. Основные файлы конфигурации находятся в каталоге данных (обычно /var/lib/pgsql/data или /var/lib/pgsql/13/data). Важные файлы:
  • postgresql.conf — глобальные параметры сервера (слушать адреса, параметры памяти, логирование);
  • pg_hba.conf — правила аутентификации клиентов (задаёт метод аутентификации и сети);
  • pg_ident.conf — необязательно, для сопоставления системных и Postgres-ролей.
  1. После изменений в конфигурации перезапустите сервис:
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)

  1. Инсталляция: пакет установлен, служба запущена, каталог данных инициализирован.
  2. Аутентификация: вход под созданной ролью возможен; неправильный пароль не допускается.
  3. CRUD: создать таблицу, вставить запись, прочитать её, обновить и удалить.
  4. Бэкап/восстановление: дамп и восстановление возвращают ту же структуру и данные.
  5. Права: роль без суперправа не может выполнить ALTER SYSTEM или изменить конфиги.

Откат (rollback) при проблемах

  1. Если после обновления пакетов сервер не запускается — проверьте логи journalctl -u postgresql и откатите пакет через менеджер пакетов или восстановите конфигурацию из бэкапа.
  2. Если конфигурация postgresql.conf привела к ошибке — восстановите предыдущую версию файла и перезапустите сервис.
  3. Для критических проблем используйте аварийный старт в безопасном режиме (временная модификация файлов конфигов и прав).

Миграция и совместимость

  • При переходе между мажорными версиями 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, чеклисты для админа и разработчика, а также советы по безопасности и миграции.

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

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

Запись и трансляция рабочего стола в VLC
Видео

Запись и трансляция рабочего стола в VLC

EXPAND в Excel — расширение массивов и примеры
Excel

EXPAND в Excel — расширение массивов и примеры

Как установить пользовательский шрифт на Kindle
Руководство

Как установить пользовательский шрифт на Kindle

Пропала адресная строка в Chrome — как вернуть
Браузеры

Пропала адресная строка в Chrome — как вернуть

Age of Empires 2 в Windows 10/11 — как запустить
Игры

Age of Empires 2 в Windows 10/11 — как запустить

Поделиться и редактировать Nametag в Instagram
Социальные сети

Поделиться и редактировать Nametag в Instagram