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

- Два способа установки
- Способ 1: Из репозитория Ubuntu
- Способ 2: Из официального репозитория PGDG
- Управление службой PostgreSQL
- Первое подключение
- Установить пароль для пользователя postgres
- Настройка аутентификации pg_hba.conf
- Несколько версий PostgreSQL на Ubuntu
- Часто задаваемые вопросы
- Какая версия PostgreSQL устанавливается через apt на Ubuntu?
- Как остановить PostgreSQL на Linux?
- Как подключиться к PostgreSQL на Ubuntu из другого компьютера?
Два способа установки
Первый — из стандартного репозитория 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.



