Trouvez le nom d'hôte et le port à l'aide des commandes PSQL


150

J'ai PSQL en cours d'exécution et j'essaie de connecter une application Perl à la base de données. Existe-t-il une commande pour trouver le port et l'hôte actuels sur lesquels la base de données s'exécute?

Réponses:


57

Le port PostgreSQL par défaut est 5432. L'hôte sur lequel la base de données fonctionne doit avoir été fourni par votre fournisseur d'hébergement; Je suppose que ce serait le même hôte que le serveur Web si l'un n'était pas spécifié. En général, cela serait configuré en tant qu'hôte local, en supposant que votre serveur Web et votre serveur de base de données se trouvent sur le même hôte.


J'ai rencontré ce problème aussi et j'ai essayé le port 5433, et cela fonctionne
Jonny Manowar

5
Cela ne répond pas vraiment à la question.
sk

@sk Lisez le contexte. L'OP ne connaissait pas l'hôte et le port de leur base de données postgres. Ils peuvent se connecter avec une psqlcommande de base , ce qui implique localhost:5432. À moins que quelqu'un ne devienne intelligent avec env vars / aliases / etc. Je n'aime pas ma réponse une décennie plus tard, mais résoudre le x au lieu de y est parfaitement bien et dans ce cas a aidé des centaines de personnes.
Brad Koch le

228
SELECT *
FROM pg_settings
WHERE name = 'port';

2
Cela ne fonctionne pas si vous avez plusieurs serveurs dans le même cluster, malheureusement ...
Vitor Baptista

2
Cela vous donne en fait le numéro de port et non l'hôte du serveur.
hd1

2
@ hd1: Et? La question était (aussi) de savoir comment obtenir le numéro de port. Et c'est ce que renvoie la requête.
a_horse_with_no_name

oui, mais si vous ne pouvez pas vous connecter à la base de données, vous ne pouvez pas l'exécuter: P
jaydel

137

Cette commande vous donnera le numéro de port postgres

 \conninfo

Si postgres s'exécute sur un serveur Linux, vous pouvez également utiliser la commande suivante

sudo netstat -plunt |grep postgres

OU (s'il vient en tant que postmaster)

sudo netstat -plunt |grep postmaster

et vous verrez quelque chose de similaire

tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      140/postgres
tcp6       0      0 ::1:5432                :::*                    LISTEN      140/postgres

dans ce cas, le numéro de port est 5432 qui est également le numéro de port par défaut

lien de crédits


1
il arrive en tant que maître de poste pour 5432.
code

4
c'est la bonne réponse. la réponse choisie est vraie mais sans rapport avec la question.
Luis Martins

42

select inet_server_addr(); vous donne l'adresse IP du serveur.


2
malheureusement, cela ne donne pas le nom d'hôte "live" si vous vous connectez via un proxy ssh - je reçois toujours "127.0.0.1"
Andrew Wolfe

8
Je n'ai rien obtenu:$postgres=# select inet_server_addr(); inet_server_addr ------------------ (1 row)
trex

N'a pas donné le nom d'hôte
Kumar Vaibhav

15

select inet_server_port(); vous donne le port du serveur.


3
Sur bluehost, cette requête renvoie un champ vide alors qu'en réalité le port était 5432. Cette requête ne renvoie pas toujours le numéro de port.
Eric Leschinski


12

Il s'agit d'une méthode non SQL. Les instructions sont données sur l'image elle-même. Sélectionnez le serveur sur lequel vous souhaitez trouver les informations, puis suivez les étapes.

entrez la description de l'image ici


9

Le port postgresql est défini dans votre postgresql.conffichier.

Pour moi, dans Ubuntu 14.04, c'est: /etc/postgresql/9.3/main/postgresql.conf

À l'intérieur, il y a une ligne:

port = 5432

Changer le nombre là-bas nécessite le redémarrage de postgresql pour qu'il prenne effet.


5

Vous pouvez utiliser la commande dans psql que \conninfo vous obtiendrezYou are connected to database "your_database" as user "user_name" on host "host_name" at port "port_number".


3

Depuis le terminal, vous pouvez faire:

\ conninfo

Je suggérerais de lire une documentation sur leur liste exhaustive de toutes les commandes en utilisant:

\?


0

allez dans le "Terminal" et tapez simplement

service postgres status

Dans les résultats, vous pouvez obtenir les détails du portExécution des détails de postgres

Dans mon cas, il fonctionne sur le port "5432" (par défaut).
J'utilise CentOS 7, j'espère que cela vous aidera.


0
SELECT CURRENT_USER usr, :'HOST' host, inet_server_port() port;

Cela utilise la variable HOST intégrée de psql, documentée ici

Et les fonctions d'information système postgres, documentées ici


Si vous vous connectez localement, HOSTsera le répertoire dans lequel réside votre socket de domaine UNIX, par exemple /tmp.
évêque

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.