Установка и запуск PostgreSQL на CentOS или Rocky


Тематические термины: PostgreSQL, CentOS
Данная инструкция написана на примере систем CentOS 7 и 8 (Rocky), а также PostgreSQL 9/10 (из коробки) или любой другой версии (настройка репозитория).
Установка
Мы можем использовать разные методы установки PostgreSQL, в зависимости от того, какая версия нам нужна. Опишем их.
Нативная версия (встроенный репозиторий)
В зависимости от версии операционной системы, из коробки будет установлена своя нативная версия PostgreSQL, например:
- CentOS 7 — 9.2.
- CentOS / Rocky версии 8 — 10.
- CentOS / Rocky версии 9 — 13.
Чтобы уточнить, какая именно версия будет установлена, вводим команду:
yum list postgresql-server
Для установки просто вводим:
yum install postgresql-server
Разные версии PostgreSQL (репозиторий разработчика)
Для установки более свежей версии PostgreSQL на CentOS необходимо подключить репозиторий:
yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-`rpm -E %{rhel}`-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Установка PostgreSQL в CentOS 8 осуществлена через модульные репозитории, что помешает нам — отключаем их командой:
dnf module disable postgresql
И чистим кэш:
dnf clean all
После чего обновляем список пакетов:
yum makecache -y
Список доступных к установке версий можно посмотреть командой:
yum repolist pgdg*
Для удобства создадим переменную с версией, которую хотим установить:
PG_VER=15
Устанавливаем postgres:
yum install postgresql${PG_VER}-server
* в данном примере будет установлен postgresql версии 15.
** система проверит репозиторий на наличие нужного пакета и задаст запрос на подтверждение установки программы — отвечаем Y.
Также стоит установить стандартный набор расширений:
yum install postgresql${PG_VER}-contrib
Использование модулей
Начиная с версии CentOS / Rocky 8, мы можем использовать модули для установки программ. Модули — это ветки репозитория, которые позволят устанавливать определенную версию приложения.
Чтобы увидеть все модули для postgresql, вводим:
dnf module list | grep postgresql
Переключимся на postgresql версии 15:
dnf module enable postgresql:15
Теперь устанавливаем его:
dnf install postgresql-server
Запуск
После установки СУБД необходимо:
- Инициализировать базу. Это делается с помощью утилиты postgresql-setup с ключом initdb.
- Разрешить автозапуск сервиса.
- Стартовать службу.
В зависимости от версии postgresql, эти операции выполняются, немного, по-разному.
PostgreSQL (базовый репозиторий или модули)
Инициализация базы:
postgresql-setup initdb
Запуск сервиса:
systemctl enable postgresql --now
PostgreSQL (другая версия — на примере 14)
Инициализация базы (синтаксис):
/usr/pgsql-<версия>/bin/postgresql-<версия>-setup initdb
Например:
/usr/pgsql-${PG_VER}/bin/postgresql-${PG_VER}-setup initdb
Разрешаем запуск сервиса и стартуем его:
systemctl enable postgresql-${PG_VER} --now
Тестовое подключение
Заходим в систему под учетной записью postgres:
su - postgres
Подключаемся к базе:
psql
Делаем тестовый запрос на получение списка таблиц:
=# \dt *
Также можно посмотреть список баз и их размеры:
=# \l+
Выходим из оболочки psql:
=# \q
Отключаемся от системы пользователем postgres:
exit
Настройка завершена. Следующим шагом настраиваем подключение к PostgreSQL и создаем пользователя.
Удаление
Для удаления достаточно ввести следующую команду.
PostgreSQL (базовый репозиторий)
yum remove postgresql-server
PostgreSQL (другая версия — на примере 14)
yum remove postgresql14-server
Возможные ошибки
Рассмотрим некоторые ошибки, с которыми можно столкнуться во время установки или эксплуатации СУБД. По мере возможности, данный список будет пополняться.
1. ERROR: invalid locale name: "ru_RU.UTF-8"
Ошибка может возникнуть при попытке создать базу данных с указанием определенной кодировки (в нашем примере ru_RU.UTF-8).
Причина: в операционной системе не установлена соответствующая кодировка.
Решение: необходимо установить пакет для кодировки соответвтующего языка. Например, в нашем случае:
yum install glibc-langpack-ru
Читайте также
Дополнительная информация по PostgreSQL:
1. Как работать с пользователями в PostgreSQL.
2. Как настроить удаленное подключение к PostgreSQL.