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?

Jamesatha
la source

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.

Brad Koch
la source
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';
un cheval sans nom
la source
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

Khaino
la source
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.

Kaarel
la source
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.

Andromida
la source
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
13
select inet_server_addr( ), inet_server_port( );
Gérardw
la source
1
Comment est - ce différent de Kaarel de Kitsemets réponse et de Andromida réponse ?
Tous les travailleurs sont essentiels le
1
Il répond à la question posée sous la forme d'une solution unique de copier-coller.
gerardw
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

bonCodigo
la source
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.

Eric Leschinski
la source
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".

Intra
la source
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:

\?

Vinayak Mishra
la source
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.

Rahal Kanishka
la source
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

professorcolm
la source
Si vous vous connectez localement, HOSTsera le répertoire dans lequel réside votre socket de domaine UNIX, par exemple /tmp.
évêque
0
service postgresql status

renvoie: 10 / main (port 5432): en ligne

J'utilise Ubuntu 18.04

Marcos Galigarcia
la source