Déterminer le port de PostgreSQL

12

Je sais que par défaut PostgreSQL écoute sur le port 5432, mais quelle est la commande pour déterminer réellement le port de PostgreSQL?

Configuration: Ubuntu 9.10 avec PostgreSQL 8.4

Matthew Rankin
la source

Réponses:

26

lsof et nmap sont des solutions, mais elles ne sont pas installées par défaut. Ce que vous voulez, c'est netstat (8).

sudo netstat -plunt |grep postgres
ptman
la source
Linux est censé migrer loin de route / ifconfig / netstat. La commande moderne équivalente est ss -plung|grep postgres(note, mêmes drapeaux)
ptman
1
Il n'y ga plus de drapeau pour la sscommande. Essayez:ss -pa |grep postgresql
GrayedFox
1
@GrayedFox merci pour la mise à jour, mais pour moi, cela donne le nom du port, pas le numéro, donc je pense que ss -pan |grep postgresc'est plus approprié
ptman
6

L'utilitaire PostgreSQL pg_lsclusters affiche des informations sur la configuration et l'état de tous les clusters, y compris le numéro de port.

$ 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

Cela présente également l'avantage de ne pas nécessiter de privilèges «sudo» pour s'exécuter.

Sur les systèmes Debian et Ubuntu, la commande pg_lsclusters est fournie par le package postgresql-common, qui doit être installé par défaut avec le serveur postgresql.

Dan Stangel
la source
3
Notez que pg_lsclustersc'est un Ubuntu-ism, et n'est pas une commande Postgres standard. Cela fonctionnera pour ce cas, mais ce n'est pas une solution polyvalente ...
voretaq7
2

Si vous voulez le faire depuis l'intérieur de la base de données, faites simplement "SHOW port". Mais cela suppose que vous avez pu vous y connecter, au moins localement ...

Magnus Hagander
la source
1

Si vous recherchez sur la machine locale, j'utiliserais la commande lsof pour vérifier le port utilisé par postgresql

lsof -p <postgres_process_id>
Dominik
la source
Vous devrez peut-être l'exécuter en tant que root.
Michael Mior
1

J'ai des machines avec plusieurs instances postgres en cours d'exécution - et j'ai donc également le problème d'essayer de faire correspondre la base de données correcte avec chaque port. J'ai tendance à faire:

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

Et puis, pour chacune des instances renvoyées, recherchez le répertoire ( -Dargument) et:

$ sudo grep port $DIR/postgresql.conf
Joe H.
la source
0

Voici une solution que j'ai trouvée:

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

Si vous souhaitez rechercher une machine non locale, changez simplement localhostl'adresse IP du serveur.

Matthew Rankin
la source