Установка и запуск PostgreSQL на Ubuntu
PostgreSQL — объектно-реляционная СУБД. В этой инструкции — установка версии из репозитория ОС и подключение репозитория PGDG для свежих версий, тестовое подключение, полезные команды и типовые ошибки.
Актуальные поддерживаемые ветки PostgreSQL — 15–18 (на сентябрь 2026 последняя — 18.6).
Установка
Версия репозитория
apt search --names-only '^postgresql$'
apt install postgresql postgresql-contrib
Из коробки Ubuntu ставится своя версия СУБД.
Разные версии (репозиторий PGDG)
echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/postgresql.list
apt install gnupg2
curl -fsS https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg2 --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg
apt update
apt install postgresql-18 postgresql-contrib-18
В примере — PostgreSQL 18. Замените номер на нужную ветку (15–18).
Тестовое подключение
su - postgres
psql
=# dt *
List of relations
Schema | Name | Type | Owner
------------+-------------------------+-------+----------
pg_catalog | pg_aggregate | table | postgres
pg_catalog | pg_am | table | postgres
...
=# q
exit
Полезные команды
=# CREATE USER dmosk WITH PASSWORD 'myPassword';
=# CREATE DATABASE database1 WITH OWNER dmosk ENCODING 'UTF8' LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8' TEMPLATE = 'template0';
Создан пользователь dmosk и база database1 с владельцем dmosk.
Возможные ошибки
1. ERROR: invalid locale name: «ru_RU.UTF-8»
Причина: в системе не установлена локаль, указанная в LC_COLLATE/LC_CTYPE при создании базы.
Решение:
locale-gen ru_RU.UTF-8
systemctl restart postgresql
где ru_RU.UTF-8 — нужная локаль.
2. New collation is incompatible
ERROR: new collation (en_US.UTF-8) is incompatible with the collation of the template database (C.UTF-8)
HINT: Use the same collation as in the template database, or use template0 as template.
Причина: кодировка шаблона отличается от указанной.
Решение: использовать кодировку шаблона либо template0:
> CREATE DATABASE new_db ENCODING 'UTF8' LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8' TEMPLATE = template0;
Тонкости и подводные камни
- Репозиторий PGDG — даёт свежие версии; ключ кладётся в
/etc/apt/trusted.gpg.d/. - Локали — генерируйте нужные локаль до создания базы, иначе получите ошибку.
template0— используйте при нестандартной кодировке/локали;template1содержит настройки по умолчанию.- Кластеры — Ubuntu ставит
postgresql-commonсpg_ctlcluster; версии управляются черезpg_lsclusters. pg_hba.conf— для удалённого доступа правьте этот файл, а не толькоpostgresql.conf.- Бэкапы —
pg_dump/pg_dumpall; регулярно проверяйте восстановление. - Версии — 15–18 поддерживаются; старые (12 и ниже) EOL.
- Порт 5432 — открывайте только при необходимости и ограничивайте доступ.
Шпаргалка
# из репозитория ОС
apt install postgresql postgresql-contrib
# свежая версия (PGDG)
echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/postgresql.list
curl -fsS https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg2 --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg
apt update && apt install postgresql-18 postgresql-contrib-18
su - postgres && psql
=# CREATE USER dmosk WITH PASSWORD 'myPassword';
=# CREATE DATABASE db1 WITH OWNER dmosk ENCODING 'UTF8' TEMPLATE = template0;
Проверено на: Ubuntu 22.04/24.04/26.04 + PostgreSQL 15–18.
Дата: Сентябрь 2026.