Если вы хотите развернуть мощную систему управления базами данных на сервере CentOS Stream 9, то PostgreSQL — отличный выбор. В этой статье мы подробно расскажем, как установить и настроить PostgreSQL на CentOS Stream 9, чтобы ваш проект работал быстро и надежно.
- Шаг 1: Обновление системы
- Шаг 2: Установка репозитория PostgreSQL
- Шаг 3: Установка PostgreSQL
- Шаг 4: Запуск и автоматизация сервиса PostgreSQL
- Шаг 5: Настройка безопасности и входа в базу данных
- Шаг 6: Подключение к базе данных
Почему именно 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 — это пошаговый и понятный процесс. Следуя нашим инструкциям, вы получите стабильную и безопасную систему для хранения данных.
В дальнейшем можно настроить удалённый доступ, автоматическое бэкапирование и другие важные функции.