2026-09-18
Установка и запуск PostgreSQL на Ubuntu

Установка и запуск 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.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *