Справочник

Как установить PostgreSQL на Ubuntu

PostgreSQL ставится из пакетов Ubuntu одной командой и сразу запускается. Администратор входит в базу через sudo -u postgres psql без пароля, а сайту заводят своего пользователя с паролем и отдельную базу.

≈ 6 мин чтения
Содержание 10

Что сделать прямо сейчас

Команды на этой странице вводятся на сервере: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне.

  1. Обновите список пакетов: sudo apt update.
  2. Установите PostgreSQL: sudo apt install postgresql. Если система спросит пароль, введите пароль своего пользователя на сервере. Символы при вводе не видны — так и должно быть: наберите пароль и нажмите Enter. На вопрос Do you want to continue? [Y/n] нажмите Y и Enter.
  3. Проверьте, что база работает: pg_lsclusters. В строке кластера main должно быть слово online.
  4. Войдите в базу: sudo -u postgres psql. Строка ввода сменится на postgres=#.
  5. Создайте пользователя и базу для сайта — команды ниже.
  6. Выйдите командой \q.

Какая версия поставится

UbuntuВерсия PostgreSQLПапка настроек
24.04PostgreSQL 16/etc/postgresql/16/main/
26.04PostgreSQL 18/etc/postgresql/18/main/

Пакет postgresql ставит ту версию, что выбрана для вашей Ubuntu, — так сверено со страницами пакетов на 14 октября 2026 года. Какая Ubuntu стоит у вас — как узнать. Дальше в примерах — 16: в Ubuntu 26.04 подставьте 18.

В Ubuntu PostgreSQL устроен как кластеры: каждый — отдельный работающий сервер базы со своей папкой данных и настроек. После установки создаётся один кластер с именем main — его и использует сайт. pg_lsclusters показывает все кластеры и их состояние: online — работает, down — остановлен.

Как войти в базу

sudo -u postgres psql

Команда запускает psql — программу для работы с базой — от имени пользователя postgres. Пароль базы не нужен: для подключений с самого сервера через файл-сокет Ubuntu настраивает способ peer. База пускает пользователя postgres, потому что команда запущена от пользователя системы с тем же именем.

Команды SQL заканчиваются точкой с запятой. Выйти из psql — \q.

Пользователь и база для сайта

Войдите через sudo -u postgres psql и выполните две команды. Вместо ivan подставьте имя пользователя, вместо новый-пароль — свой пароль, вместо shop — имя базы:

CREATE USER ivan WITH PASSWORD 'новый-пароль';
CREATE DATABASE shop OWNER ivan;

Первая команда создаёт пользователя, которому разрешён вход по паролю. Вторая — базу, владельцем которой становится этот пользователь: в своей базе он может создавать таблицы и всё остальное. Выйдите командой \q и проверьте вход:

psql -h 127.0.0.1 -U ivan shop

psql спросит пароль — введите тот, что задали в CREATE USER. Строка shop=> значит, что вход работает. В настройках сайта укажите адрес 127.0.0.1 или localhost, порт 5432, имя базы, пользователя и пароль.

Почему с -h 127.0.0.1: так psql подключается по сети, где Ubuntu настраивает проверку пароля способом scram-sha-256. Без -h psql идёт через файл-сокет, а там действует peer: база пустит ivan, только если в системе есть пользователь с таким же именем и команда запущена от него.

Где настройки

ФайлЧто в нём
/etc/postgresql/16/main/postgresql.confосновные настройки: порт, адреса, память
/etc/postgresql/16/main/pg_hba.confкто, к каким базам и каким способом может подключаться
/etc/postgresql/16/main/pg_ident.confсоответствие пользователей системы и базы

После правки настроек перезапустите PostgreSQL: sudo systemctl restart postgresql. Проверьте результат командой pg_lsclusters.

Подключения с другого компьютера

По умолчанию PostgreSQL принимает подключения только с самого сервера. Для сайта на том же VPS этого достаточно. Как подключиться к базе со своего компьютера через SSH-туннель, не открывая порт, — Порт 5432. Если базе нужны подключения с другого сервера — как не открыть базу всему интернету.

Не открывайте порт 5432 для всех командой sudo ufw allow 5432: подбирать пароли к базе сможет кто угодно.

Если сайт на PHP

Чтобы PHP мог работать с PostgreSQL, поставьте модуль: sudo apt install php-pgsql. Затем перезапустите PHP-FPM: sudo systemctl restart php8.3-fpm, в Ubuntu 26.04 — php8.5-fpm. Как поставить сам PHP — Как установить PHP на Ubuntu.

Если не получается

  • pg_lsclusters показывает down — кластер остановлен. Запустите его: sudo pg_ctlcluster 16 main start. Если не запускается, причина будет в журнале кластера: sudo tail -n 30 /var/log/postgresql/postgresql-16-main.log.
  • psql не принимает пароль — проверьте имя пользователя и пароль базы: это не пароль от сервера. Задать новый можно из sudo -u postgres psql командой ALTER USER ivan WITH PASSWORD 'новый-пароль';.
  • Без -h 127.0.0.1 вход не проходит, а с ним проходит — так работает способ peer, см. выше.
  • apt отвечает Unable to locate package — разбор.
  • Другая ошибка — найдите слова из сообщения в списке Ошибки PostgreSQL.

Источники

Сверено 14 октября 2026 года.

Что почитать дальше