Назад | Перейти на главную страницу

Определение порта PostgreSQL

Я знаю, что по умолчанию PostgreSQL прослушивает порт 5432, но какая команда на самом деле определяет порт PostgreSQL?

Конфигурация: Ubuntu 9.10 с PostgreSQL 8.4

lsof и nmap - это решения, но они не установлены по умолчанию. Вам нужен netstat (8).

sudo netstat -plunt |grep postgres

Утилита PostgreSQL pg_lsclusters показывает информацию о конфигурации и состоянии всех кластеров, включая номер порта.

$ pg_lsclusters
Version Cluster   Port Status Owner    Data directory                     Log file
8.4     main      5433 online postgres /var/lib/postgresql/8.4/main       /var/log/postgresql/postgresql-8.4-main.log

Это также имеет то преимущество, что для запуска не требуются привилегии sudo.

В системах Debian и Ubuntu команда pg_lsclusters предоставляется пакетом postgresql-common, который должен быть установлен по умолчанию с сервером postgresql.

Если вы хотите сделать это из базы данных, просто выполните «ПОКАЗАТЬ порт». Но это предполагает, что вы смогли подключиться к нему, по крайней мере, локально ...

Если вы ищете на локальном компьютере, я бы использовал команду lsof, чтобы проверить порт, который использует postgresql.

lsof -p <postgres_process_id>

У меня есть машины с несколькими запущенными экземплярами postgres, поэтому у меня также есть проблема с попыткой сопоставить правильную базу данных с каждым портом. Я обычно делаю:

$ ps aux | grep  postgres | grep -v 'postgres:'

Затем для каждого возвращенного экземпляра найдите каталог (-D аргумент) и:

$ sudo grep port $DIR/postgresql.conf

Вот одно решение, которое я нашел:

sudo apt-get install nmap
sudo nmap localhost | grep postgresql

Если вы хотите выполнить поиск на нелокальном компьютере, просто измените localhost на IP-адрес сервера.