Как узнать порт PostgreSQL в Linux

Как узнать порт postgresql linux

Содержание статьи

Как узнать порт postgresql linux

Порт подключения PostgreSQL определяет, по какому сетевому адресу клиенты получают доступ к серверу базы данных. По умолчанию используется 5432, однако на реальных системах это значение часто меняют: при размещении нескольких кластеров, настройке изоляции сервисов или запуске PostgreSQL внутри контейнеров. Неверно указанный порт приводит к ошибкам подключения даже при корректных учетных данных.

В Linux информация о порте может находиться в разных местах: в конфигурационных файлах, в параметрах запущенного процесса, в системном менеджере служб или в сетевых сокетах. Конкретный способ зависит от того, как установлен PostgreSQL – через пакетный менеджер, сборку из исходников или Docker-образ.

Администратору часто требуется определить порт без остановки сервера и без доступа к графическим инструментам. Для этого используются стандартные утилиты системы (ss, lsof), встроенные команды PostgreSQL и служебные файлы кластера. Каждый из подходов дает результат в разных условиях и полезен при диагностике проблем с подключением.

Ниже разобраны практические способы определения порта PostgreSQL в Linux, которые применимы как на тестовых серверах, так и в рабочих средах с несколькими экземплярами базы данных.

Проверка значения параметра port в файле postgresql.conf

Файл postgresql.conf содержит ключевой параметр port, который задает TCP-порт, на котором PostgreSQL принимает подключения. По умолчанию это 5432, но на серверах с несколькими кластерами или измененными настройками он может отличаться.

В системах на базе Debian и Ubuntu конфигурационный файл обычно находится по пути /etc/postgresql/15/main/postgresql.conf, в Red Hat и CentOS – /var/lib/pgsql/15/data/postgresql.conf. При сборке из исходников postgresql.conf размещается внутри каталога данных, указанного при инициализации кластера.

Для проверки значения порта откройте файл текстовым редактором или выполните команду grep «^port» /путь/к/postgresql.conf. Если строка закомментирована символом #, сервер использует стандартный порт 5432. Переопределения через директивы include или include_dir учитываются, поэтому при нестандартной конфигурации полезно выполнить поиск по всему каталогу конфигурации.

Изменение значения port требует перезапуска сервера PostgreSQL для применения новых настроек. Проверка через файл дает точную информацию о конфигурации кластера до подключения клиентов.

Получение номера порта командой SHOW port в psql

Получение номера порта командой SHOW port в psql

Команда SHOW port; в интерактивной консоли psql позволяет получить текущий порт, на котором сервер PostgreSQL принимает подключения. Она возвращает точное значение, используемое активным процессом, независимо от того, указано ли оно в postgresql.conf или задано по умолчанию.

Для выполнения запроса необходимо подключиться к базе данных под любым пользователем, имеющим права на подключение. Команда выглядит так: psql -U имя_пользователя -d имя_базы, после чего вводится SHOW port;. В ответ вы получите числовое значение, например 5432.

Метод удобен при работе с несколькими кластерами на одном сервере или с контейнерами, где прямой доступ к файлу postgresql.conf ограничен. Он также актуален для динамически изменяемых настроек с помощью ALTER SYSTEM SET port, поскольку возвращает порт, реально используемый сервером.

При удаленном подключении важно убедиться, что брандмауэр и сетевые правила разрешают доступ к порту, указанному командой SHOW port;, чтобы исключить ошибки соединения.

Определение порта PostgreSQL через утилиту pg_lsclusters в Debian и Ubuntu

Утилита pg_lsclusters отображает список всех установленных кластеров PostgreSQL на системах Debian и Ubuntu, включая используемые порты. Она показывает версию сервера, статус кластера, путь к данным и номер TCP-порта.

Метод удобен при наличии нескольких версий PostgreSQL на одном сервере. Он позволяет быстро определить активные кластеры и их порты без обращения к конфигурационным файлам и без подключения через psql.

Для автоматизации можно использовать команду вместе с grep или awk, например pg_lsclusters | awk ‘{print $1, $2, $5}’, чтобы извлечь только имя кластера, версию и порт.

Просмотр настроек порта в службе PostgreSQL через systemd

Systemd управляет запуском службы PostgreSQL и передает ей параметры конфигурации. Порт сервера можно проверить через анализ юнит-файла и текущих процессов службы.

  • Команда systemctl status postgresql показывает активный статус службы и путь к каталогу данных, где хранится postgresql.conf. Порт указан в этом файле.
  • Для детального просмотра параметров запуска выполните systemctl show postgresql. Параметр ExecStart содержит команду запуска, которая может включать опцию -p с указанием порта.
  • Если используется несколько кластеров, systemd создает отдельные юниты, например postgresql@15-main.service. Анализ каждого юнита показывает порт конкретного экземпляра.

Метод особенно полезен для серверов с ограниченным доступом к файловой системе или для проверки реальных настроек, применяемых systemd при запуске PostgreSQL.

Поиск прослушиваемого порта PostgreSQL с помощью команды ss

Команда ss позволяет определить, на каких портах сервер PostgreSQL принимает подключения, анализируя активные сетевые сокеты. Метод работает независимо от конфигурационных файлов и актуален для всех запущенных экземпляров.

Для проверки TCP-порта выполните команду:

ss -tlnp | grep postgres

Адрес Порт Процесс
0.0.0.0 5432 postgres: 12345
127.0.0.1 5433 postgres: 12346

Определение порта процесса postgres через утилиту lsof

Определение порта процесса postgres через утилиту lsof

Утилита lsof позволяет получить список открытых файлов и сокетов, включая TCP-порты, которые использует процесс PostgreSQL. Этот способ дает точную информацию о порте, на котором сервер реально принимает соединения.

Для поиска используйте команду:

sudo lsof -iTCP -sTCP:LISTEN -n -P | grep postgres

  • COMMAND – имя процесса, обычно postgres;
  • PID – идентификатор процесса;
  • USER – пользователь, под которым запущен сервер;
  • NODE – тип соединения (TCP);
  • PORT – номер порта, на котором процесс слушает соединения.

Проверка порта PostgreSQL внутри Docker-контейнера

В контейнерах Docker PostgreSQL может быть настроен на нестандартный порт, который проброшен на хост. Для определения используемого порта важно проверить как внутренние настройки сервера, так и правила проброса портов контейнера.

Для проверки внутренних настроек выполните команду:

docker exec -it имя_контейнера psql -U имя_пользователя -c «SHOW port;»

Для проверки проброса портов на хосте используйте:

docker port имя_контейнера

Результаты удобно оформить в таблицу:

Контейнер Внутренний порт Проброшенный порт на хосте
postgres_container 5432 6543

Этот метод позволяет одновременно видеть, какой порт использует PostgreSQL внутри контейнера и какой порт доступен для подключений с хоста. Он актуален при работе с несколькими контейнерами на одном сервере и при диагностике проблем с сетевым доступом.

Определение порта PostgreSQL по сообщениям в журналах запуска

Определение порта PostgreSQL по сообщениям в журналах запуска

Журналы запуска PostgreSQL фиксируют информацию о старте сервера, включая номер порта, на котором он принимает подключения. Этот метод позволяет определить порт без обращения к конфигурационным файлам и активным подключениям.

  • В системах с systemd журналы доступны через команду journalctl -u postgresql или journalctl -u postgresql@15-main для конкретного кластера.
  • В пакетных дистрибутивах Debian и Ubuntu можно проверить лог-файл по пути /var/log/postgresql/postgresql-15-main.log.
  • В Red Hat, CentOS и Fedora журналы обычно находятся в /var/lib/pgsql/15/data/pg_log.

Для быстрого поиска номера порта используйте фильтр по ключевому слову listening:

grep «listening» /var/log/postgresql/postgresql-15-main.log

Пример записи в журнале:

  • 2025-12-16 10:12:34 LOG: listening on IPv4 address «0.0.0.0», port 5432

Метод полезен при анализе проблем с подключением и для подтверждения фактического порта, используемого сервером после применения изменений в конфигурации.

Вопрос-ответ:

Как быстро узнать, на каком порту запущен PostgreSQL на сервере Linux?

Самый прямой способ — подключиться к базе через psql и выполнить команду SHOW port;. Она возвращает текущий порт, который использует активный процесс сервера. Если доступа к psql нет, можно проверить прослушиваемые сокеты через ss -tlnp | grep postgres или найти порт в файле postgresql.conf.

Где находится конфигурационный файл PostgreSQL, и как из него узнать порт?

Файл postgresql.conf хранится в каталоге данных кластера. В Debian и Ubuntu путь обычно /etc/postgresql/15/main/postgresql.conf, в Red Hat и CentOS — /var/lib/pgsql/15/data/postgresql.conf. Внутри файла ищите строку port = 5432. Если она закомментирована символом #, используется стандартный порт 5432. В случае нескольких кластеров учитывайте директивы include и include_dir, которые могут переопределять порт.

Можно ли узнать порт PostgreSQL, если сервер работает в Docker-контейнере?

Да. Для этого сначала нужно подключиться к контейнеру: docker exec -it имя_контейнера psql -U имя_пользователя -c «SHOW port;». Эта команда покажет порт внутри контейнера. Для проверки, какой порт проброшен на хост, используйте docker port имя_контейнера. Такой подход позволяет различать внутренний и внешний порты для подключения приложений.

Как определить порт PostgreSQL с помощью systemd?

Служба PostgreSQL управляется systemd, и номер порта можно проверить через юнит. Команда systemctl show postgresql выводит параметр ExecStart, в котором может быть указана опция -p с портом. Для конкретного кластера используется юнит вида postgresql@15-main.service. Анализ этих данных позволяет узнать фактический порт, применяемый системой при запуске сервера.

Можно ли определить порт PostgreSQL по журналам запуска?

Да, журналы фиксируют, на каком порту сервер начал слушать соединения. В системах с systemd выполните journalctl -u postgresql или для конкретного кластера journalctl -u postgresql@15-main. В логах также встречается запись вида LOG: listening on IPv4 address «0.0.0.0», port 5432. Этот способ помогает убедиться, что сервер использует ожидаемый порт после изменения конфигурации.

Как узнать, на каком порту работает PostgreSQL, если сервер запущен, но доступа к psql нет?

Можно использовать системные утилиты для просмотра открытых сетевых сокетов. Например, команда ss -tlnp | grep postgres покажет все TCP-порты, которые слушает процесс PostgreSQL, вместе с PID. Альтернативно, утилита lsof -iTCP -sTCP:LISTEN -n -P | grep postgres даст схожую информацию. Эти методы позволяют определить реальный порт без подключения к базе и без просмотра конфигурационных файлов.

Где искать информацию о порте PostgreSQL при работе с несколькими кластерами на одном сервере?

В системах Debian и Ubuntu удобнее всего использовать pg_lsclusters. Команда sudo pg_lsclusters выведет список всех кластеров, их версию, статус и номер порта. Для каждого кластера также можно проверить файл postgresql.conf в соответствующем каталоге данных. Если сервер управляется systemd, можно изучить юниты вида postgresql@<версия>—<имя>.service и обратить внимание на параметр ExecStart для обнаружения указанного порта.

Ссылка на основную публикацию