PostgreSQL 15 — это мощная объектно-реляционная система управления базами данных. Она широко используется в веб-приложениях, аналитике и корпоративных системах. Версия 15 остаётся востребованной для проектов, где важна совместимость с расширениями или более медленный график обновления БД.
В этом руководстве я покажу два способа установки PostgreSQL 15 на Debian:
- Из официальных репозиториев Debian (только Debian 12)
- Из репозитория PostgreSQL (PGDG) (Debian 13, 11 и опционально Debian 12)
| Релиз Debian | PostgreSQL по умолчанию | postgresql-15 в Debian | Рекомендуемый источник |
|---|---|---|---|
| Debian 13 (Trixie) | 17.x | ❌ Нет | PGDG репозиторий |
| Debian 12 (Bookworm) | 15.x | ✅ Да | Debian репозиторий (или PGDG) |
| Debian 11 (Bullseye) | 13.x | ❌ Нет | PGDG репозиторий |
⚠️ Важно: Используйте версионные пакеты (postgresql-15, postgresql-client-15), а не postgresql (который следует за веткой по умолчанию).
Предварительные требования
Перед установкой убедитесь, что:
- Вы имеете права
sudo(администратора)
⚠️ ВАЖНО: Проверьте права sudo перед установкой
Если вы не уверены, есть ли у вашего пользователя права администратора, выполните в терминале:
sudo whoami
Что делает: sudo — выполняет команду от имени суперпользователя; whoami — показывает имя текущего пользователя.
✅ Ожидаемый вывод в терминале:
root
❌ Если выводит is not in the sudoers file — сначала пройдите наше руководство по настройке sudo.
Способ 1: Установка PostgreSQL 15 из репозиториев Debian (Debian 12)
Этот метод работает только на Debian 12 (Bookworm), где PostgreSQL 15 есть в официальных репозиториях.
Шаг 1: Обновите систему
sudo apt update && sudo apt upgrade -y
Шаг 2: Установите PostgreSQL 15
sudo apt install -y postgresql-15 postgresql-client-15
Что делает: Устанавливает сервер PostgreSQL 15 и клиентские утилиты (psql, pg_dump, pg_restore).
Шаг 3: Проверьте установку
psql --version
pg_lsclusters
✅ Ожидаемый вывод:
psql (PostgreSQL) 15.18 (Debian 15.18-0+deb12u1)
Ver Cluster Port Status Owner Data directory Log file
15 main 5432 online postgres /var/lib/postgresql/15/main /var/log/postgresql/postgresql-15-main.log
Что означают поля:
Status: online— кластер работаетPort: 5432— стандартный порт PostgreSQLOwner: postgres— пользователь-администратор БД
Способ 2: Установка PostgreSQL 15 из репозитория PGDG (Debian 13, 11 и опционально Debian 12)
PGDG (PostgreSQL Global Development Group) предоставляет официальные пакеты PostgreSQL для Debian. Этот метод необходим на Debian 13 и 11, а на Debian 12 даёт более свежие минорные версии.
Шаг 1: Установите зависимости
sudo apt install -y ca-certificates curl
Шаг 2: Скачайте GPG-ключ PGDG
sudo install -d -m 0755 /usr/share/postgresql-common/pgdg
sudo curl -fsSLo /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc https://www.postgresql.org/media/keys/ACCC4CF8.asc
Шаг 3: Добавьте репозиторий PGDG
(
. /etc/os-release
arch=$(dpkg --print-architecture)
case "$VERSION_CODENAME" in
trixie|bookworm|bullseye) ;;
*) echo "Unsupported Debian version"; exit 1 ;;
esac
case "$arch" in
amd64|arm64|ppc64el) ;;
*) echo "Unsupported architecture: $arch"; exit 1 ;;
esac
printf '%s\n' \
'Types: deb' \
'URIs: https://apt.postgresql.org/pub/repos/apt' \
"Suites: ${VERSION_CODENAME}-pgdg" \
'Components: main' \
"Architectures: ${arch}" \
'Signed-By: /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc' | sudo tee /etc/apt/sources.list.d/pgdg.sources > /dev/null
)
Шаг 4: Обновите список пакетов
sudo apt update
Шаг 5: Проверьте, что пакет postgresql-15 виден
apt-cache policy postgresql-15
✅ Ожидаемый вывод (Debian 13):
postgresql-15:
Installed: (none)
Candidate: 15.18-1.pgdg13+1
Version table:
15.18-1.pgdg13+1 500
500 https://apt.postgresql.org/pub/repos/apt trixie-pgdg/main amd64 Packages
Шаг 6: Установите PostgreSQL 15
sudo apt install -y postgresql-15 postgresql-client-15
Шаг 7: Проверьте установку
psql --version
pg_lsclusters
✅ Ожидаемый вывод (PGDG):
psql (PostgreSQL) 15.18 (Debian 15.18-1.pgdg13+1)
Установка только клиентских инструментов
Если сервер БД находится на другой машине, можно установить только клиент:
sudo apt install -y postgresql-client-15
Проверка:
psql --version
✅ Ожидаемый вывод: psql (PostgreSQL) 15.18
Управление кластером PostgreSQL
Debian управляет PostgreSQL через postgresql-common. Основные команды:
| Команда | Что делает |
|---|---|
pg_lsclusters | Показать все кластеры (версия, порт, статус) |
sudo systemctl status postgresql@15-main | Статус кластера PostgreSQL 15 |
sudo systemctl restart postgresql@15-main | Перезапустить кластер |
sudo systemctl reload postgresql@15-main | Перезагрузить конфигурацию (без остановки) |
sudo journalctl -u postgresql@15-main -n 30 | Посмотреть последние 30 строк лога |
Первые шаги с PostgreSQL
Шаг 1: Войдите в оболочку PostgreSQL от пользователя postgres
sudo -iu postgres psql
Шаг 2: Выполните базовые команды
\l -- список баз данных
\du -- список ролей (пользователей)
\q -- выход
Шаг 3: Создайте пользователя и базу данных для приложения
sudo -iu postgres createuser --pwprompt appuser
sudo -iu postgres createdb -O appuser appdb
Что делает: Создаёт пользователя appuser (с запросом пароля) и базу данных appdb, владельцем которой является appuser.
Шаг 4: Проверьте подключение
psql -h 127.0.0.1 -U appuser -d appdb -c '\conninfo'
(введите пароль, созданный на предыдущем шаге)
✅ Ожидаемый вывод:
You are connected to database "appdb" as user "appuser" on host "127.0.0.1" at port "5432".
Обновление PostgreSQL 15
Обновление Debian APT-версии
sudo apt update
sudo apt install --only-upgrade postgresql-15 postgresql-client-15 -y
Обновление PGDG-версии
sudo apt update
sudo apt install --only-upgrade postgresql-15 postgresql-client-15 -y
Решение типичных проблем
8.1 Ошибка: Unable to locate package postgresql-15 на Debian 13 или 11
Симптом: sudo apt install postgresql-15 не находит пакет.
Причина: Debian 13 и 11 не содержат PostgreSQL 15 в официальных репозиториях.
Пошаговое решение:
Используйте метод 2 (PGDG репозиторий).
8.2 Ошибка: PGDG source или signing key проблемы
Симптом: sudo apt update выдаёт ошибку ключа или недоступности репозитория.
Причина: Неправильный файл репозитория или повреждённый ключ.
Пошаговое решение:
Шаг 1: Проверьте файл репозитория:
cat /etc/apt/sources.list.d/pgdg.sources
Шаг 2: Убедитесь, что Suites: соответствует вашему кодовому имени:
- Debian 13:
trixie-pgdg - Debian 12:
bookworm-pgdg - Debian 11:
bullseye-pgdg
Шаг 3: Переустановите ключ:
sudo install -d -m 0755 /usr/share/postgresql-common/pgdg
sudo curl -fsSLo /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc https://www.postgresql.org/media/keys/ACCC4CF8.asc
sudo apt update
8.3 Ошибка: Кластер PostgreSQL не запущен
Симптом: pg_lsclusters показывает down или stopped.
Причина: Сервис не запущен.
Пошаговое решение:
Шаг 1: Запустите кластер:
sudo systemctl start postgresql@15-main
Шаг 2: Проверьте логи:
sudo journalctl -u postgresql@15-main -n 30 --no-pager
Шаг 3: Включите автозапуск:
sudo systemctl enable postgresql@15-main
8.4 Ошибка: Не удаётся подключиться к серверу
Симптом: psql: error: connection to server on socket ... failed
Причина: PostgreSQL не запущен или неправильные настройки аутентификации.
Пошаговое решение:
Шаг 1: Проверьте, что сервер запущен:
pg_lsclusters
Шаг 2: Проверьте, что порт 5432 слушается:
sudo ss -tlnp | grep 5432
Шаг 3: Проверьте настройки pg_hba.conf (обычно в /etc/postgresql/15/main/pg_hba.conf).
8.5 Ошибка: Установлены только клиентские инструменты, а не сервер
Симптом: psql работает, но pg_lsclusters не найден или не показывает кластер.
Причина: Установлен только postgresql-client-15, а не postgresql-15.
Пошаговое решение:
Проверьте, какие пакеты установлены:
dpkg -l postgresql-15 postgresql-client-15
Если postgresql-15 не установлен — установите его:
sudo apt install -y postgresql-15
Удаление PostgreSQL 15
Шаг 1: Удалите кластер (с данными)
⚠️ Внимание: Эта команда удаляет ВСЕ данные базы данных кластера 15!
sudo pg_dropcluster --stop 15 main
Шаг 2: Удалите пакеты
sudo apt remove postgresql-15 postgresql-client-15
sudo apt autoremove
Шаг 3: Удалите репозиторий PGDG (если использовали)
sudo rm -f /etc/apt/sources.list.d/pgdg.sources
sudo apt update
Шаг 4: Удалите ключ (если не используется другими источниками)
sudo rm -f /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc
sudo rmdir --ignore-fail-on-non-empty /usr/share/postgresql-common/pgdg
Шаг 5: Проверьте удаление
dpkg -l postgresql-15 postgresql-client-15 | grep '^ii' || echo "PostgreSQL 15 packages are no longer installed."
Чек-лист: что проверить после установки
- [ ] PostgreSQL установлен:
psql --version→psql (PostgreSQL) 15.x - [ ] Кластер запущен:
pg_lsclusters→15 main ... online - [ ] Можно подключиться локально:
sudo -iu postgres psql -c 'SELECT version();' - [ ] Создан пользователь для приложения:
sudo -iu postgres createuser --pwprompt appuser - [ ] Создана база данных:
sudo -iu postgres createdb -O appuser appdb - [ ] Подключение по TCP работает:
psql -h 127.0.0.1 -U appuser -d appdb -c '\conninfo'
Часто задаваемые вопросы (FAQ)
Вопрос: Какая версия PostgreSQL в Debian 13 по умолчанию?
Ответ: Debian 13 (Trixie) содержит PostgreSQL 17. Для PostgreSQL 15 используйте PGDG репозиторий.
Вопрос: В чём разница между postgresql-15 и postgresql?
Ответ: postgresql-15 — фиксированная версия 15. postgresql — мета-пакет, который следует за версией по умолчанию в вашем репозитории (в Debian 13 это 17).
Вопрос: Нужно ли создавать пользователя postgres?
Ответ: Нет, он создаётся автоматически при установке.
Вопрос: Как разрешить удалённые подключения к PostgreSQL?
Ответ: Измените listen_addresses в postgresql.conf и добавьте правило в pg_hba.conf. Не забудьте настроить файрвол.
Вопрос: Как сделать резервную копию базы данных?
Ответ: pg_dump -U appuser -h localhost appdb > backup.sql
Заключение
Теперь PostgreSQL 15 установлен на вашем Debian. Вы можете использовать его для веб-приложений, аналитики или как надёжное хранилище данных.
Что дальше?
- Настройте резервное копирование
- Установите pgAdmin для управления через веб-интерфейс
- Настройте репликацию для отказоустойчивости