Как установить PostgreSQL на Ubuntu
PostgreSQL ставится из пакетов Ubuntu одной командой и сразу запускается. Администратор входит в базу через sudo -u postgres psql без пароля, а сайту заводят своего пользователя с паролем и отдельную базу.
Содержание 10
Что сделать прямо сейчас
Команды на этой странице вводятся на сервере: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне.
- Обновите список пакетов:
sudo apt update. - Установите PostgreSQL:
sudo apt install postgresql. Если система спросит пароль, введите пароль своего пользователя на сервере. Символы при вводе не видны — так и должно быть: наберите пароль и нажмите Enter. На вопросDo you want to continue? [Y/n]нажмите Y и Enter. - Проверьте, что база работает:
pg_lsclusters. В строке кластера main должно быть словоonline. - Войдите в базу:
sudo -u postgres psql. Строка ввода сменится наpostgres=#. - Создайте пользователя и базу для сайта — команды ниже.
- Выйдите командой
\q.
Какая версия поставится
| Ubuntu | Версия PostgreSQL | Папка настроек |
|---|---|---|
| 24.04 | PostgreSQL 16 | /etc/postgresql/16/main/ |
| 26.04 | PostgreSQL 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 shoppsql спросит пароль — введите тот, что задали в 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. Если базе нужны подключения с другого сервера — как не открыть базу всему интернету.
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.
Источники
- Документация Ubuntu Server: Install PostgreSQL — установка, peer и scram-sha-256, папка /etc/postgresql/, вход через sudo -u postgres.
- Пакет postgresql в Ubuntu 24.04 — ставит PostgreSQL 16.
- Пакет postgresql в Ubuntu 26.04 — ставит PostgreSQL 18.
- PostgreSQL 16: CREATE USER — то же, что CREATE ROLE, но с правом входа; пароль задаёт PASSWORD.
- PostgreSQL 16: CREATE DATABASE — владелец базы задаётся словом OWNER.
- Справка pg_lsclusters для Ubuntu 24.04 — список кластеров PostgreSQL и их состояние: online или down.
- Справка pg_ctlcluster для Ubuntu 24.04 — запуск и остановка кластера, журнал в /var/log/postgresql/.
Сверено 14 октября 2026 года.
Что почитать дальше
- Порт 5432подключиться к базе с компьютера через SSH-туннель.
- Сервер для базы данныхкогда базе нужен отдельный VPS.
- Как установить MySQL на Ubuntuесли сайту нужна MySQL.
- Как установить PHP на UbuntuPHP-FPM для сайта на PHP.
- Резервные копии сайтакопия файлов и базы по расписанию.
- Установка программ на Ubuntuчто ещё поставить для сайта.