Установка PostgreSQL на Ubuntu — apt, systemctl, настройка

PostgreSQL на Ubuntu устанавливается одной командой. Но есть нюансы: версия из стандартного apt может быть устаревшей, нужно настроить аутентификацию, разобраться с pg_ctlcluster. Разбираем всё по порядку.

PostgreSQL база знаний: перейти в рубрику с уроками на русском языке

Два способа установки

Первый — из стандартного репозитория Ubuntu (быстро, но версия может быть не последней). Второй — из официального репозитория PGDG (последняя версия, рекомендуется для продакшна).

Способ 1: Из репозитория Ubuntu

# Обновить список пакетов
sudo apt update

# Установить PostgreSQL с дополнительными расширениями
sudo apt install postgresql postgresql-contrib

# Проверить установку
psql --version
# psql (PostgreSQL) 14.x — для Ubuntu 22.04

# Проверить статус службы
sudo systemctl status postgresql

Версии PostgreSQL в стандартных репозиториях Ubuntu: Ubuntu 20.04 → PostgreSQL 12, Ubuntu 22.04 → PostgreSQL 14, Ubuntu 24.04 → PostgreSQL 16. Если нужна более новая версия — используйте способ 2.

Способ 2: Из официального репозитория PGDG

# Установить зависимости
sudo apt install -y curl ca-certificates

# Создать папку для ключей
sudo install -d /usr/share/postgresql-common/pgdg

# Скачать ключ репозитория
sudo curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc \
  --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc

# Добавить репозиторий
sudo sh -c 'echo "deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] \
  https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" \
  > /etc/apt/sources.list.d/pgdg.list'

# Обновить и установить нужную версию
sudo apt update
sudo apt install postgresql-17

# Проверить
psql --version
# psql (PostgreSQL) 18.x

Управление службой PostgreSQL

# Статус
sudo systemctl status postgresql

# Запустить
sudo systemctl start postgresql

# Остановить
sudo systemctl stop postgresql

# Перезапустить (при изменении конфига)
sudo systemctl restart postgresql

# Перечитать конфиг без полного перезапуска
sudo systemctl reload postgresql

# Включить автозапуск при загрузке сервера
sudo systemctl enable postgresql

# Проверить что PostgreSQL слушает порт 5432
ss -tnlp | grep 5432

Первое подключение

PostgreSQL автоматически создаёт системного пользователя Linux postgres. По умолчанию аутентификация настроена через peer — подключение только от пользователя с тем же именем:

# Переключиться на пользователя postgres и запустить psql:
sudo -u postgres psql

# Или одной командой — войти в конкретную базу:
sudo -u postgres psql -d mydb

# Приглашение:
# postgres=#

# Проверить версию внутри psql:
SELECT version();

# Список баз данных:
\l

# Выйти:
\q

Установить пароль для пользователя postgres

# Войти в psql от пользователя postgres:
sudo -u postgres psql

-- Установить пароль:
ALTER USER postgres WITH PASSWORD 'mysecretpassword';
\q

# Теперь можно подключаться с паролем (с хоста):
psql -h localhost -U postgres -W
# Password: mysecretpassword

Настройка аутентификации pg_hba.conf

Файл pg_hba.conf управляет тем, кто и как может подключаться к PostgreSQL:

# Найти файл:
sudo -u postgres psql -c "SHOW hba_file;"
# /etc/postgresql/17/main/pg_hba.conf

# Открыть для редактирования:
sudo nano /etc/postgresql/17/main/pg_hba.conf

# Типичное содержимое:
# TYPE  DATABASE  USER      ADDRESS         METHOD
# local all       postgres                  peer        ← системный пользователь
# local all       all                       peer
# host  all       all       127.0.0.1/32    scram-sha-256  ← TCP по паролю
# host  all       all       ::1/128         scram-sha-256

# Для подключения по паролю локально — изменить peer на md5 или scram-sha-256:
# local all all md5

# После изменений — перезагрузить:
sudo systemctl reload postgresql

Несколько версий PostgreSQL на Ubuntu

# Посмотреть все установленные кластеры:
pg_lsclusters

# Пример вывода:
# Ver Cluster Port Status Owner    Data directory
# 14  main    5432 online postgres /var/lib/postgresql/14/main
# 17  main    5433 online postgres /var/lib/postgresql/17/main

# Запустить/остановить конкретный кластер:
sudo pg_ctlcluster 17 main start
sudo pg_ctlcluster 17 main stop

# Подключиться к версии 17 (порт 5433):
sudo -u postgres psql -p 5433

Часто задаваемые вопросы

Какая версия PostgreSQL устанавливается через apt на Ubuntu?

Зависит от версии Ubuntu: Ubuntu 20.04 Focal → PostgreSQL 12, Ubuntu 22.04 Jammy → PostgreSQL 14, Ubuntu 24.04 Noble → PostgreSQL 16. Это не последние версии. Для установки свежего PostgreSQL 18 нужно добавить официальный репозиторий PGDG через apt.postgresql.org — процедура описана выше в Способе 2.

Как остановить PostgreSQL на Linux?

Через systemctl: sudo systemctl stop postgresql — остановит все кластеры. Для конкретного кластера: sudo pg_ctlcluster 17 main stop. На сервере без systemd (старые дистрибутивы): sudo service postgresql stop. Проверить что остановился: sudo systemctl status postgresql или ss -tnlp | grep 5432 — порт должен быть свободен.

Как подключиться к PostgreSQL на Ubuntu из другого компьютера?

Нужно сделать два шага: 1) В postgresql.conf изменить listen_addresses = 'localhost' на listen_addresses = '*'. 2) В pg_hba.conf добавить строку host all all 0.0.0.0/0 scram-sha-256 (или указать конкретный IP вместо 0.0.0.0/0). Перезапустить PostgreSQL. Убедиться что порт 5432 открыт в firewall: sudo ufw allow 5432/tcp. Подключаться: psql -h IP_СЕРВЕРА -U postgres -W.

Оцените статью
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x