
PostgreSQL − объектно-реляционная система управления базами данных (СУБД) с открытым исходным кодом, соответствующая стандартам SQL. С помощью пользовательских функций и типов данных PostgreSQL поддерживает сложные запросы, репликацию и расширяемость. В PostgreSQL встроены механизмы защиты данных − контроль изоляции транзакций (MVCC) и ролевая модель управления доступом.
Благодаря хорошей масштабируемости PostgreSQL активно используется в высоконагруженных системах, аналитике и веб-приложениях. При этом сообщество PostgreSQL регулярно выпускает обновления, обеспечивая безопасность и добавляя на постоянной основе новые возможности.
В статье разберём, как установить PostgreSQL на виртуальный сервер, работающий под управлением Debian 12.
Как установить PostgreSQL на Debian 12
Перед установкой в систему нового программного обеспечения рекомендуется обновить список пакетов, доступных из репозиториев Debian на данный момент:
$ sudo apt update
После чего установите PostgreSQL:
$ sudo apt install postgresql postgresql-contrib
В данном случае команда проинсталлирует основную СУБД PostgreSQL, включая серверную часть и базовые утилиты, а также дополнительные модули и утилиты (postgresql-contrib
), в число которых входят:
uuid-ossp
− расширение для генерации UUID;hstore
− модуль для работы с key-value хранилищами;pg_stat_statements
− модуль для расширенного мониторинга SQL-запросов;citext
− расширение для регистронезависимых строк;pgcrypto
− модуль для шифрования и хеширования.
После окончания установки проверьте статус службы postgresql
:
$ systemctl status postgresql
При этом, в выводе команды не должно содержаться сообщений о каких-либо ошибках. Служба должна быть в активном состоянии и установлена в автозагрузку.

При инсталляции PostgreSQL создаёт учётную запись postgres
. Следующей командой переключите текущего пользователя на пользователя postgres
с предоставлением ему его окружения и прав:
$ sudo -i -u postgres
После чего запустите командную строку PostgreSQL:
$ psql
Приглашение для ввода команд в интерфейсе PostgreSQL выглядит как postgres=#
:

Используя командную строку, вы можете, например, вывести версию PostgreSQL:
SELECT version();
В нашем примере вывод команды выглядит следующим образом:

Для выхода из командной строки используйте команду:
\q
Настройка внешнего подключения (опционально)
По умолчанию PostgreSQL принимает соединения только с localhost
. Если вам нужен доступ с другого устройства, требуется разрешить внешние подключения.
Чтобы это сделать, откройте для редактирования файл postgresql.conf
:
$ sudo nano /etc/postgresql/15/main/postgresql.conf
В файле отыщите строку:
# listen_addresses = 'localhost'
Снимите с неё комментарий и вместо localhost
установите символ *
:
listen_addresses = '*'
Символ *
означает, что PostgreSQL будет принимать соединения с любых IP-адресов.
Если вам нужно разрешить подключение только с конкретного IP-адреса, укажите его через запятую после localhost
:
listen_addresses = 'localhost,10.10.101.11'
В данном случае замените 10.10.101.11
на IP-адрес узла, с которого нужно разрешить подключение к PostgreSQL.
Затем, находясь в том же каталоге, откройте файл pg_hba.conf
:
$ sudo nano /etc/postgresql/15/main/pg_hba.conf
И добавьте в него строку, разрешающую доступ для всех IP-адресов:
host all all 0.0.0.0/0 md5
Если нужно ограничить доступ только определённой подсетью, например, 10.10.101.0/24
, то укажите её в этой строке:
host all all 10.10.101.0/24 md5
Чтобы минимизировать возможности несанкционированного доступа к вашим данным, не открывайте доступ к PostgreSQL для всех возможных IP-адресов (0.0.0.0/0
), если это не нужно! Более безопасная практика − указание конкретных IP-адресов.
Для применения внесённых изменений перезагрузите службу PostgreSQL:
$ sudo systemctl restart postgresql
Настройка брандмауэра UFW
Если ваша система защищена брандмауэром UFW, необходимо разрешить в брандмауэре доступ к серверу через порт PostgreSQL. Стандартным портом PostgreSQL является TCP-порт 5432. Добавление разрешающего правила для этого порта осуществляется командой:
$ sudo ufw allow 5432/tcp
Для применения новой настройки перезапустите конфигурацию брандмауэра:
$ sudo ufw reload