Установка PostgreSQL и pgAdmin4 на Debian 12

Зачем это нужно
PostgreSQL — открытая, расширяемая и соответствующая стандарту SQL система управления базами данных. pgAdmin4 — удобный графический администратор для PostgreSQL, доступный в виде десктоп- и веб-версий. Вместе они позволяют быстро развернуть, администрировать и развивать БД в продуктивной или тестовой среде на Debian 12.
Кому подойдёт это руководство
- Системным администраторам, которым нужно развернуть PostgreSQL на Debian 12.
- Разработчикам, желающим управлять базами через pgAdmin4.
- Операторам, которым важна базовая безопасность и резервное копирование.
Требования
- Сервер под управлением Debian 12.
- Непривилегированный пользователь с правами sudo.
План статьи
- Добавление репозитория PostgreSQL и установка сервера
- Первичная настройка и смена пароля пользователя postgres
- Создание ролей и баз через psql
- Установка и настройка pgAdmin4 (веб)
- Подключение сервера в pgAdmin4 и создание базы через GUI
- Рекомендации по безопасности, бэкапам и мониторингу
- Критерии приёмки и контрольный список
Установка PostgreSQL на Debian 12
PostgreSQL можно установить из официального репозитория проекта, чтобы получать актуальные версии и обновления.
Сначала добавьте репозиторий PostgreSQL для вашей системы Debian:
sudo sh -c 'echo "deb [arch=amd64 signed-by=/usr/share/keyrings/pgdg.gpg] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'Затем добавьте GPG-ключ репозитория:
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --dearmor -o /usr/share/keyrings/pgdg.gpgОбновите индекс пакетов:
sudo apt update
Установите сервер PostgreSQL:
sudo apt install postgresqlПодтвердите установку, введя y, если система спросит.

Проверьте статус службы PostgreSQL:
sudo systemctl is-enabled postgresql
sudo systemctl status postgresqlЕсли служба включена и запущена, вы увидите статус active (running).

Важно: служба PostgreSQL по умолчанию слушает только localhost (listen_addresses = ‘localhost’). Если планируете подключаться удалённо, нужно будет изменить конфигурацию и настроить TLS/брандмауэр.
Первая настройка: смена пароля для системного пользователя postgres
После установки в системе создаётся системный пользователь postgres, который по умолчанию владеет экземпляром БД. Сначала войдите в оболочку psql от имени этого пользователя:
sudo -u postgres psqlВнутри psql выполните изменение пароля (замените ‘p4ssw0rdAdmin’ на надёжный пароль):
ALTER USER postgres WITH PASSWORD 'p4ssw0rdAdmin';Завершите сеанс psql:
quit
Важно: используйте длинные уникальные пароли или интеграцию с менеджером секретов в продуктивной среде.
Создание роли и базы данных через psql
psql — стандартный клиент для работы с PostgreSQL. Он позволяет управлять ролями, базами и выполнять SQL-запросы.
Войдите снова в psql от имени системного пользователя postgres:
sudo -u postgres psqlСоздайте новую роль с правами на создание баз и ролей и установите пароль:
CREATE USER alice with CREATEDB CREATEROLE;
ALTER USER alice with PASSWORD 'p4ssw0rd';Проверьте список ролей (обратите внимание: в JSON-выводе в документации часто встречается ‘\du’):
\du
Создайте базу данных под управлением роли alice:
CREATE DATABASE alice OWNER alice;
\l
Завершите работу с psql:
quitУстановка pgAdmin4 (веб-версия)
pgAdmin4 в веб-режиме разворачивается как WSGI-приложение, которое чаще всего запускают через Apache2 или nginx + uWSGI/Gunicorn. В Debian пакет pgadmin4-web автоматически предложит конфигурацию Apache.
Добавьте репозиторий pgAdmin4:
sudo echo "deb [arch=amd64 signed-by=/usr/share/keyrings/pgadmin4.gpg] https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main"\
| sudo tee /etc/apt/sources.list.d/pgadmin4.listДобавьте ключ репозитория:
curl -fsSL https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo gpg --dearmor -o /usr/share/keyrings/pgadmin4.gpg
Обновите индекс пакетов и установите веб-версию pgAdmin4:
sudo apt update
sudo apt install pgadmin4-webПодтвердите установку при появлении запроса.

После установки выполните скрипт настройки веб-интерфейса:
/usr/pgadmin4/bin/setup-web.shВо время выполнения вас попросят:
- Ввести email/логин и пароль администратора pgAdmin4.
- Подтвердить включение модуля WSGI и конфигурацию доступа по пути /pgadmin4.
- Подтвердить перезапуск Apache2 для применения изменений.

Откройте браузер и перейдите по адресу http://

После успешного входа вы увидите панель управления pgAdmin4.

Добавление сервера PostgreSQL в pgAdmin4
- В панели pgAdmin нажмите Add New Server.
- На вкладке General укажите имя сервера (произвольное) и группу.

- Перейдите на вкладку Connection и заполните поля:
- Host: IP или hostname сервера PostgreSQL (для локальной машины — localhost).
- Port: 5432 (порт по умолчанию).
- Username: имя роли (например alice или postgres).
- Password: пароль роли.
- Включите Save password, если хотите, чтобы пароль запоминался (учтите риски сохранения пароля на сервере).

Нажмите Save. Если соединение успешно, сервер отобразится в левом дереве Servers.

Создание базы данных через pgAdmin4
- Правый клик на сервере → Create → Database.

- Введите имя базы и выберите владельца (Owner). Нажмите Save. В примере создаём appdb владельцем alice.

После создания база отобразится в дереве объектов.

Проверка через psql (локально под пользователем alice):
su - postgres
psql -U alice -h localhostВнутри psql выполните:
\l
Рекомендации по безопасности и настройке доступа
Важно обеспечить базову́ю безопасность при развёртывании БД в сети.
- Сетевой доступ
- По умолчанию в файле /etc/postgresql//main/postgresql.conf параметр listen_addresses = ‘localhost’. Для удалённых подключений укажите конкретный IP или ‘‘ при необходимости, но лучше ограничивать IP в брандмауэре.
- Настройте брандмауэр (ufw) и разрешите вход только с доверенных хостов:
sudo ufw allow from 192.168.10.0/24 to any port 5432 proto tcp
sudo ufw enable- Файл контроля доступа pg_hba.conf
- Файл находится в каталоге конфигурации PostgreSQL (например /etc/postgresql/15/main/pg_hba.conf). Пример записи для паролей md5:
# TYPE DATABASE USER ADDRESS METHOD
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
host all all 192.168.10.0/24 md5TLS
- Для защиты трафика включите SSL-сертификаты и настройте ssl = on, ssl_cert_file, ssl_key_file в postgresql.conf.
Пароли и права
- Используйте роли с минимальными привилегиями (принцип наименьших привилегий). Откажитесь от shared superuser, если не требуется.
Сохранение пароля в pgAdmin
- Если сервер доступен в общем доступе, избегайте опции Save password в pgAdmin на общедоступных машинах.
Резервное копирование и восстановление
- Резервное копирование отдельных баз данных:
pg_dump -U alice -h localhost -F c -b -v -f /backups/appdb_$(date +%F).dump appdb- Полные логические дампы всех баз:
pg_dumpall -U postgres -h localhost > /backups/all_$(date +%F).sql- Физическое резервное копирование (для больших БД и быстрой RPO): pg_basebackup, использование репликации и WAL-архивации.
Мониторинг и базовые метрики
Следите за следующими показателями:
- Доступность сервиса (is the postmaster process running).
- Нагрузка на диск и свободное место (problematic for WAL growth).
- Количество активных соединений.
- Время выполнения долгих запросов.
Инструменты: pg_stat_activity, pg_stat_replication, внешние агенты мониторинга (Prometheus + PostgreSQL exporter, Zabbix и т.д.).
Быстрый чек-лист ролей (Role-based checklist)
Администратор БД
- Установил обновления и патчи системы.
- Настроил резервное копирование и проверку восстановления.
- Настроил мониторинг и алерты.
Девелопер
- Создал отдельную роль с минимальными правами.
- Выделил тестовую базу.
- Использует миграции (Flyway, Liquibase, sqitch).
Оператор
- Настроил брандмауэр, SSL и ограничения по IP.
- Проверил периодические задания резервного копирования (cron/systemd timers).
Мини-методика развертывания на продакшн (пошагово)
- Подготовка окружения: обновление пакетов, создание раздела/тома для данных PostgreSQL.
- Установка PostgreSQL и базовая конфигурация (listen_addresses, wal_level, archive_mode).
- Настройка бэкапов и проверка восстановления в безопасной среде.
- Установка pgAdmin4 на отдельном управляемом сервере или в контейнере.
- Применение правил брандмауэра и TLS.
- Перенос данных, smoke-тесты, нагрузочное тестирование.
- Перевод в рабочую эксплуатацию и включение мониторинга.
Частые ошибки и способы устранения
- Не удаётся подключиться из pgAdmin4: проверьте listen_addresses, pg_hba.conf и брандмауэр.
- Ошибка аутентификации: убедитесь в правильности имени пользователя, пароля и метода аутентификации в pg_hba.conf.
- Служба не стартует: смотрите логи systemd (sudo journalctl -u postgresql) и файл лога PostgreSQL.
Критерии приёмки
- PostgreSQL установлен и служба запущена (sudo systemctl status postgresql).
- Успешный вход в psql под postgres и под пользовательской ролью (alice).
- Успешное создание и видимость базы appdb в psql и через pgAdmin4.
- Резервная копия создаётся и успешно восстанавливается в тестовом окружении.
- Брандмауэр и pg_hba.conf настроены так, чтобы допускать только разрешённые хосты.
Контрольные тесты
- Подключиться к базе appdb под ролью alice из локальной машины и выполнить SELECT 1.
- Создать дамп через pg_dump и восстановить в отдельной базе.
- Проверить, что pgAdmin4 доступен через браузер по path /pgadmin4 и позволяет подключаться к серверу.
Шпаргалка команд (Cheat sheet)
Установка PostgreSQL:
sudo apt update sudo apt install postgresqlВход в psql как postgres:
sudo -u postgres psqlСписок ролей и баз:
\du \lСоздание роли и базы:
CREATE USER bob WITH CREATEDB; ALTER USER bob WITH PASSWORD 'secure'; CREATE DATABASE project OWNER bob;Дамп и восстановление:
pg_dump -U bob -h localhost -F c -f /tmp/project.dump project pg_restore -U bob -d project_restored /tmp/project.dump
Модели мышления и когда этот подход не подходит
Ментальная модель: PostgreSQL — это надежный ACID-совместимый реляционный движок с расширяемой архитектурой (типами, индексами, расширениями). pgAdmin4 — удобный инструмент управления, но не заменяет скрипты автоматизации и CI/CD.
Когда не подходит:
- Для гипермалых проектов без требований к SQL вы можете выбрать более простые решения (SQLite).
- Для проектов, требующих горизонтального масштабирования по шардированию на уровне приложений, возможно, потребуются дополнительные решения (Citus, сторонние шардинговые слои).
Совместимость и миграция с предыдущих версий
- PostgreSQL стремится к обратной совместимости SQL, но при обновлении мажорных версий рекомендуется читать релиз-ноуты.
- Для безопасного апгрейда используйте pg_upgrade или логическую миграцию через pg_dump/pg_restore.
Безопасность данных и соответствие требованиям приватности
- Если обрабатываете персональные данные, применяйте шифрование на уровне диска и TLS для трафика, ограничьте доступ по списку IP и храните пароли в безопасном хранилище.
- Логи доступа и аудита следует хранить согласно политикам вашей организации.
Заключение
Вы успешно установили PostgreSQL и pgAdmin4 на Debian 12, настроили пароли и создали тестовую роль и базу данных как через psql, так и через pgAdmin4. Дальше рекомендуем настроить резервное копирование, мониторинг и продумать политику доступа и шифрования.
Важные заметки
- Не храните простые пароли в открытом виде; используйте менеджеры секретов.
- Всегда тестируйте восстановление резервных копий.
Ресурсы и дальнейшие шаги
- Официальная документация PostgreSQL: https://www.postgresql.org/docs/
- Официальная документация pgAdmin: https://www.pgadmin.org/docs/
Итоговый контрольный список
- Служба PostgreSQL запущена и включена
- Пароль postgres изменён
- Создана роль alice и база appdb
- pgAdmin4 установлен и доступен по /pgadmin4
- Настроены бэкапы и проверено восстановление
- Ограничен доступ через pg_hba.conf и брандмауэр
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента