PostgreSQL на CentOS Stream 9: пошаговая инструкция для начинающих.

Если вы хотите развернуть мощную систему управления базами данных на сервере CentOS Stream 9, то PostgreSQL — отличный выбор. В этой статье мы подробно расскажем, как установить и настроить PostgreSQL на CentOS Stream 9, чтобы ваш проект работал быстро и надежно.

Почему именно PostgreSQL и CentOS Stream 9?

PostgreSQL — это одна из самых популярных систем управления базами данных с открытым исходным кодом, известная своей надежностью, безопасностью и богатым функционалом.

CentOS Stream 9 — современная версия популярной операционной системы на базе Linux, которая идеально подходит для серверных решений и корпоративных проектов.

Почему выбирают PostgreSQL на CentOS Stream 9?

  • Высокая надежность и безопасность.
  • Широкие возможности по настройке.
  • Поддержка современных стандартов SQL.
  • Бесплатное использование и открытый исходный код.

Шаг 1: Обновление системы

Перед началом установки важно обновить все имеющиеся пакеты до последней версии:

[root@waky ~]# dnf update -y

Это гарантирует, что все компоненты системы актуальны и совместимы.

Шаг 2: Установка репозитория PostgreSQL

Официальные пакеты PostgreSQL доступны через репозиторий PostgreSQL Global Development Group (PGDG). Чтобы его добавить, выполните следующую команду:

[root@waky ~]# dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Последняя проверка окончания срока действия метаданных: 0:02:52 назад, Пн 01 дек 2025 04:56:27.
pgdg-redhat-repo-latest.noarch.rpm                                                                                                                                    14 kB/s |  13 kB     00:00
Зависимости разрешены.
=====================================================================================================================================================================================================
 Пакет                                               Архитектура                               Версия                                          Репозиторий                                     Размер
=====================================================================================================================================================================================================
Установка:
 pgdg-redhat-repo                                    noarch                                    42.0-62PGDG                                     @commandline                                     13 k

Результат транзакции
=====================================================================================================================================================================================================
Установка  1 Пакет

Общий размер: 13 k
Объем изменений: 18 k
Загрузка пакетов:
Проверка транзакции
Проверка транзакции успешно завершена.
Идет проверка транзакции
Тест транзакции проведен успешно.
Выполнение транзакции
  Подготовка       :                                                                                                                                                                             1/1
  Установка        : pgdg-redhat-repo-42.0-62PGDG.noarch                                                                                                                                         1/1
  Проверка         : pgdg-redhat-repo-42.0-62PGDG.noarch                                                                                                                                         1/1

Установлен:
  pgdg-redhat-repo-42.0-62PGDG.noarch

Выполнено!
[root@waky ~]#

Затем отключите встроенные репозитории PostgreSQL в CentOS, чтобы не возникло конфликтов:

[root@waky ~]# dnf -qy module disable postgresql
Импорт GPG-ключа 0x08B40D20:
Идентификатор пользователя:  "PostgreSQL RPM Repository <pgsql-pkg-yum@lists.postgresql.org>"
Отпечаток: D4BF 08AE 67A0 B4C7 A1DB CCD2 40BC A2B4 08B4 0D20
Источник:  /etc/pki/rpm-gpg/PGDG-RPM-GPG-KEY-RHEL
Импорт GPG-ключа 0x08B40D20:
Идентификатор пользователя:  "PostgreSQL RPM Repository <pgsql-pkg-yum@lists.postgresql.org>"
Отпечаток: D4BF 08AE 67A0 B4C7 A1DB CCD2 40BC A2B4 08B4 0D20
Источник:  /etc/pki/rpm-gpg/PGDG-RPM-GPG-KEY-RHEL
Импорт GPG-ключа 0x08B40D20:
Идентификатор пользователя:  "PostgreSQL RPM Repository <pgsql-pkg-yum@lists.postgresql.org>"
Отпечаток: D4BF 08AE 67A0 B4C7 A1DB CCD2 40BC A2B4 08B4 0D20
Источник:  /etc/pki/rpm-gpg/PGDG-RPM-GPG-KEY-RHEL
Импорт GPG-ключа 0x08B40D20:
Идентификатор пользователя:  "PostgreSQL RPM Repository <pgsql-pkg-yum@lists.postgresql.org>"
Отпечаток: D4BF 08AE 67A0 B4C7 A1DB CCD2 40BC A2B4 08B4 0D20
Источник:  /etc/pki/rpm-gpg/PGDG-RPM-GPG-KEY-RHEL
Импорт GPG-ключа 0x08B40D20:
Идентификатор пользователя:  "PostgreSQL RPM Repository <pgsql-pkg-yum@lists.postgresql.org>"
Отпечаток: D4BF 08AE 67A0 B4C7 A1DB CCD2 40BC A2B4 08B4 0D20
Источник:  /etc/pki/rpm-gpg/PGDG-RPM-GPG-KEY-RHEL
Импорт GPG-ключа 0x08B40D20:
Идентификатор пользователя:  "PostgreSQL RPM Repository <pgsql-pkg-yum@lists.postgresql.org>"
Отпечаток: D4BF 08AE 67A0 B4C7 A1DB CCD2 40BC A2B4 08B4 0D20
Источник:  /etc/pki/rpm-gpg/PGDG-RPM-GPG-KEY-RHEL
Импорт GPG-ключа 0x08B40D20:
Идентификатор пользователя:  "PostgreSQL RPM Repository <pgsql-pkg-yum@lists.postgresql.org>"
Отпечаток: D4BF 08AE 67A0 B4C7 A1DB CCD2 40BC A2B4 08B4 0D20
Источник:  /etc/pki/rpm-gpg/PGDG-RPM-GPG-KEY-RHEL
[root@waky ~]#

Шаг 3: Установка PostgreSQL

Теперь установим саму базу данных. На момент написания статьи последняя версия – PostgreSQL 18. Используйте номер версии необходимый вам.

Команда для установки:

[root@waky ~]# dnf install -y postgresql18-server
Последняя проверка окончания срока действия метаданных: 0:03:36 назад, Пн 01 дек 2025 05:00:43.
Зависимости разрешены.
=====================================================================================================================================================================================================
 Пакет                                                 Архитектура                              Версия                                             Репозиторий                                 Размер
=====================================================================================================================================================================================================
Установка:
 postgresql18-server                                   x86_64                                   18.1-1PGDG.rhel9                                   pgdg18                                      7.2 M
Установка зависимостей:
 liburing                                              x86_64                                   2.5-1.el9                                          appstream                                    39 k
 postgresql18                                          x86_64                                   18.1-1PGDG.rhel9                                   pgdg18                                      1.9 M
 postgresql18-libs                                     x86_64                                   18.1-1PGDG.rhel9                                   pgdg18                                      293 k

Результат транзакции
=====================================================================================================================================================================================================
Установка  4 Пакета

Объем загрузки: 9.4 M
Объем изменений: 43 M
Загрузка пакетов:
(1/4): liburing-2.5-1.el9.x86_64.rpm                                                                                                                                  58 kB/s |  39 kB     00:00
(2/4): postgresql18-libs-18.1-1PGDG.rhel9.x86_64.rpm                                                                                                                 248 kB/s | 293 kB     00:01
(3/4): postgresql18-18.1-1PGDG.rhel9.x86_64.rpm                                                                                                                      964 kB/s | 1.9 MB     00:02
(4/4): postgresql18-server-18.1-1PGDG.rhel9.x86_64.rpm                                                                                                               3.1 MB/s | 7.2 MB     00:02
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Общий размер                                                                                                                                                         2.3 MB/s | 9.4 MB     00:04
PostgreSQL 18 for RHEL / Rocky Linux / AlmaLinux 9 - x86_64                                                                                                          1.0 MB/s | 2.4 kB     00:00
Импорт GPG-ключа 0x08B40D20:
Идентификатор пользователя:  "PostgreSQL RPM Repository <pgsql-pkg-yum@lists.postgresql.org>"
Отпечаток: D4BF 08AE 67A0 B4C7 A1DB CCD2 40BC A2B4 08B4 0D20
Источник:  /etc/pki/rpm-gpg/PGDG-RPM-GPG-KEY-RHEL
Импорт ключа успешно завершен
Проверка транзакции
Проверка транзакции успешно завершена.
Идет проверка транзакции
Тест транзакции проведен успешно.
Выполнение транзакции
  Подготовка       :                                                                                                                                                                             1/1
  Установка        : postgresql18-libs-18.1-1PGDG.rhel9.x86_64                                                                                                                                   1/4
  Запуск скриптлета: postgresql18-libs-18.1-1PGDG.rhel9.x86_64                                                                                                                                   1/4
  Установка        : postgresql18-18.1-1PGDG.rhel9.x86_64                                                                                                                                        2/4
  Запуск скриптлета: postgresql18-18.1-1PGDG.rhel9.x86_64                                                                                                                                        2/4
failed to link /usr/bin/psql -> /etc/alternatives/pgsql-psql: /usr/bin/psql exists and it is not a symlink
failed to link /usr/bin/clusterdb -> /etc/alternatives/pgsql-clusterdb: /usr/bin/clusterdb exists and it is not a symlink
failed to link /usr/bin/createdb -> /etc/alternatives/pgsql-createdb: /usr/bin/createdb exists and it is not a symlink
failed to link /usr/bin/createuser -> /etc/alternatives/pgsql-createuser: /usr/bin/createuser exists and it is not a symlink
failed to link /usr/bin/dropdb -> /etc/alternatives/pgsql-dropdb: /usr/bin/dropdb exists and it is not a symlink
failed to link /usr/bin/dropuser -> /etc/alternatives/pgsql-dropuser: /usr/bin/dropuser exists and it is not a symlink
failed to link /usr/bin/pg_dump -> /etc/alternatives/pgsql-pg_dump: /usr/bin/pg_dump exists and it is not a symlink
failed to link /usr/bin/pg_dumpall -> /etc/alternatives/pgsql-pg_dumpall: /usr/bin/pg_dumpall exists and it is not a symlink
failed to link /usr/bin/pg_restore -> /etc/alternatives/pgsql-pg_restore: /usr/bin/pg_restore exists and it is not a symlink
failed to link /usr/bin/reindexdb -> /etc/alternatives/pgsql-reindexdb: /usr/bin/reindexdb exists and it is not a symlink
failed to link /usr/bin/vacuumdb -> /etc/alternatives/pgsql-vacuumdb: /usr/bin/vacuumdb exists and it is not a symlink

  Установка        : liburing-2.5-1.el9.x86_64                                                                                                                                                   3/4
  Запуск скриптлета: postgresql18-server-18.1-1PGDG.rhel9.x86_64                                                                                                                                 4/4
Creating group 'postgres' with GID 26.
Creating user 'postgres' (PostgreSQL Server) with UID 26 and GID 26.

  Установка        : postgresql18-server-18.1-1PGDG.rhel9.x86_64                                                                                                                                 4/4
  Запуск скриптлета: postgresql18-server-18.1-1PGDG.rhel9.x86_64                                                                                                                                 4/4
  Проверка         : liburing-2.5-1.el9.x86_64                                                                                                                                                   1/4
  Проверка         : postgresql18-18.1-1PGDG.rhel9.x86_64                                                                                                                                        2/4
  Проверка         : postgresql18-libs-18.1-1PGDG.rhel9.x86_64                                                                                                                                   3/4
  Проверка         : postgresql18-server-18.1-1PGDG.rhel9.x86_64                                                                                                                                 4/4

Установлен:
  liburing-2.5-1.el9.x86_64            postgresql18-18.1-1PGDG.rhel9.x86_64            postgresql18-libs-18.1-1PGDG.rhel9.x86_64            postgresql18-server-18.1-1PGDG.rhel9.x86_64

Выполнено!
[root@waky ~]#

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

[root@waky ~]# /usr/pgsql-18/bin/postgresql-18-setup initdb
Initializing database ... OK

[root@waky ~]#

Шаг 4: Запуск и автоматизация сервиса PostgreSQL

Чтобы сервер PostgreSQL автоматически запускался при загрузке системы и чтобы запустить его вручную, используйте команды:

[root@waky ~]# systemctl enable postgresql-18
Created symlink /etc/systemd/system/multi-user.target.wants/postgresql-18.service → /usr/lib/systemd/system/postgresql-18.service.
[root@waky ~]# systemctl start postgresql-18
[root@waky ~]#

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

[root@waky ~]# systemctl status postgresql-18
● postgresql-18.service - PostgreSQL 18 database server
     Loaded: loaded (/usr/lib/systemd/system/postgresql-18.service; enabled; preset: disabled)
     Active: active (running) since Mon 2025-12-01 05:06:18 MSK; 19s ago
       Docs: https://www.postgresql.org/docs/18/static/
    Process: 3140 ExecStartPre=/usr/pgsql-18/bin/postgresql-18-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
   Main PID: 3145 (postgres)
      Tasks: 10 (limit: 10652)
     Memory: 22.1M (peak: 22.3M)
        CPU: 89ms
     CGroup: /system.slice/postgresql-18.service
             ├─3145 /usr/pgsql-18/bin/postgres -D /var/lib/pgsql/18/data/
             ├─3146 "postgres: logger "
             ├─3147 "postgres: io worker 2"
             ├─3148 "postgres: io worker 0"
             ├─3149 "postgres: io worker 1"
             ├─3150 "postgres: checkpointer "
             ├─3151 "postgres: background writer "
             ├─3153 "postgres: walwriter "
             ├─3154 "postgres: autovacuum launcher "
             └─3155 "postgres: logical replication launcher "

дек 01 05:06:17 waky.ru systemd[1]: Starting PostgreSQL 18 database server...
дек 01 05:06:18 waky.ru postgres[3145]: 2025-12-01 05:06:18.059 MSK [3145] СООБЩЕНИЕ:  передача вывода в протокол процессу сбора протоколов
дек 01 05:06:18 waky.ru postgres[3145]: 2025-12-01 05:06:18.059 MSK [3145] ПОДСКАЗКА:  В дальнейшем протоколы будут выводиться в каталог "log".
дек 01 05:06:18 waky.ru systemd[1]: Started PostgreSQL 18 database server.
[root@waky ~]#

Если всё сделано правильно, вы увидите сообщение о том, что служба запущена.

Шаг 5: Настройка безопасности и входа в базу данных

По умолчанию PostgreSQL использует аутентификацию по паролю. Чтобы создать первого пользователя или базу данных, выполните:

Перейдите в командную оболочку PostgreSQL:

[root@waky ~]# sudo -u postgres psql
could not change directory to "/root": Отказано в доступе
psql (13.20, server 18.1)
WARNING: psql major version 13, server major version 18.
         Some psql features might not work.
Type "help" for help.

postgres=#

Создайте нового пользователя:

postgres=# CREATE USER myuser WITH PASSWORD 'mypassword';
CREATE ROLE
postgres=#

Создайте базу данных под этого пользователя:

postgres=# CREATE DATABASE mydatabase OWNER myuser;
CREATE DATABASE
postgres=#

Выйдите из psql:

postgres=# \q
[root@waky ~]#

Шаг 6: Подключение к базе данных

Теперь вы можете подключаться к базе данных с помощью клиента psql или другого инструмента, указав ваши логин, пароль и адрес сервера.

Пример подключения:

[root@waky ~]# psql -h localhost -U myuser -d mydatabase
Пароль пользователя myuser:
psql (13.20, сервер 18.1)
ПРЕДУПРЕЖДЕНИЕ: psql имеет базовую версию 13, а сервер - 18.
                Часть функций psql может не работать.
Введите "help", чтобы получить справку.

mydatabase=>

Заключение

Настройка PostgreSQL на CentOS Stream 9 — это пошаговый и понятный процесс. Следуя нашим инструкциям, вы получите стабильную и безопасную систему для хранения данных.

В дальнейшем можно настроить удалённый доступ, автоматическое бэкапирование и другие важные функции.