Установка PostgreSQL 16: пошаговая инструкция

PostgreSQL 16 — это мощная объектно-реляционная система управления базами данных с открытым исходным кодом. В этом руководстве мы установим PostgreSQL 16 на операционные системы семейства Linux (Ubuntu/Debian и CentOS/RHEL) с помощью официальных репозиториев. Инструкция рассчитана на начинающих пользователей, знакомых с командной строкой.

Что понадобится

  • Права суперпользователя (root) или доступ к sudo
  • Активное подключение к интернету
  • Терминал с поддержкой командной строки
  • Для Ubuntu/Debian — пакет wget и ca-certificates (обычно предустановлены)
  • Для CentOS/RHEL — версия 7, 8 или 9 (на момент написания поддерживаются)

Пошаговая инструкция

1. Добавление официального репозитория PostgreSQL

Ubuntu и Debian

Откройте терминал и выполните следующие команды для добавления репозитория:

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update

CentOS / RHEL

Установите репозиторий через пакет pgdg-redhat-repo. Пример для CentOS 8:

sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo yum -q makecache

Для CentOS 7 замените EL-8 на EL-7, для CentOS 9 — на EL-9.

2. Установка сервера PostgreSQL 16

Ubuntu / Debian

sudo apt install postgresql-16

CentOS / RHEL

Установите сервер и дополнительные утилиты:

sudo yum install postgresql16-server postgresql16-contrib

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

  • Ubuntu / Debian — база инициализируется автоматически после установки пакета. Дополнительных действий не требуется.

  • CentOS / RHEL — необходимо инициализировать вручную:

    sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
    

4. Запуск сервера и добавление в автозагрузку

Ubuntu / Debian

sudo systemctl enable postgresql
sudo systemctl start postgresql

CentOS / RHEL

sudo systemctl enable postgresql-16
sudo systemctl start postgresql-16

5. Проверка установки

Выполните запрос к серверу через учётную запись postgres:

sudo -u postgres psql -c "SELECT version();"

Вы должны увидеть строку, содержащую PostgreSQL 16.x.

6. (Опционально) Настройка пароля для пользователя postgres

По умолчанию вход в локальную базу возможен без пароля по методу peer. Для смены пароля выполните:

sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'ваш_пароль';"

Возможные ошибки и их решения

Ошибка: "E: Unable to locate package postgresql-16"

  • Причина: не обновлён список пакетов после добавления репозитория.
  • Решение: выполните sudo apt update (Ubuntu) или sudo yum makecache (CentOS).

Ошибка: "could not connect to server: Connection refused"

  • Причина: сервер не запущен.
  • Решение: проверьте состояние сервиса (systemctl status postgresql), запустите его и настройте автозагрузку.

Ошибка: "psql: FATAL: Peer authentication failed for user 'postgres'"

  • Причина: метод аутентификации peer не подходит при подключении не от имени системного пользователя.
  • Решение: подключитесь через sudo -u postgres psql или измените файл pg_hba.conf, заменив peer на md5 или scram-sha-256 (после изменения перезапустите сервер).

Ошибка: конфликт порта (5432 уже используется)

  • Причина: другой экземпляр PostgreSQL или иной сервис занимает порт.
  • Решение: смените порт в файле postgresql.conf (параметр port), например на 5433, затем перезапустите сервер.

Полезные советы

  • Для управления базами данных через графический интерфейс установите pgAdmin 4: sudo apt install pgadmin4 (Ubuntu) или загрузите с официального сайта.
  • Регулярно создавайте резервные копии баз с помощью pg_dump или pg_dumpall. Пример: pg_dump -U username mydb > mydb.sql.
  • Если требуется удалённое подключение к серверу, отредактируйте два файла в каталоге /etc/postgresql/16/main/:
    1. postgresql.conf — раскомментируйте listen_addresses = '*'.
    2. pg_hba.conf — добавьте строку host all all 0.0.0.0/0 scram-sha-256 (замените на нужную подсеть). После изменений обязательно перезапустите сервер: sudo systemctl restart postgresql.
  • Для повышения безопасности используйте сложные пароли и включите встроенный механизм шифрования (ssl).