ค้นหาชื่อโฮสต์และพอร์ตโดยใช้คำสั่ง PSQL


150

ฉันใช้งาน PSQL อยู่และกำลังพยายามเชื่อมต่อแอปพลิเคชัน Perl กับฐานข้อมูล มีคำสั่งให้ค้นหาพอร์ตและโฮสต์ปัจจุบันที่ฐานข้อมูลกำลังรันอยู่หรือไม่?

คำตอบ:


57

พอร์ต PostgreSQL 5432เริ่มต้นคือ โฮสต์ที่ฐานข้อมูลกำลังดำเนินการอยู่นั้นควรได้รับจากผู้ให้บริการโฮสต์ของคุณ ฉันเดาว่ามันจะเป็นโฮสต์เดียวกับเว็บเซิร์ฟเวอร์หากไม่ได้ระบุไว้ โดยทั่วไปจะกำหนดค่าเป็น localhost โดยสมมติว่าเว็บเซิร์ฟเวอร์และเซิร์ฟเวอร์ฐานข้อมูลของคุณอยู่ในโฮสต์เดียวกัน


ฉันพบปัญหานี้ด้วยและลองใช้พอร์ต 5433 และสิ่งนี้ใช้ได้
Jonny Manowar

5
นี่ไม่ได้ตอบคำถามจริงๆ
sk

@sk อ่านบริบท OP ไม่รู้จักโฮสต์และพอร์ตสำหรับฐานข้อมูล postgres พวกเขาสามารถเชื่อมต่อกับพื้นฐานคำสั่งเพื่อให้หมายถึงpsql localhost:5432นอกเสียจากว่าจะมีใครฉลาดกับ env vars / aliases / etc ฉันไม่ชอบคำตอบของฉันในอีกสิบปีต่อมา แต่การแก้ไข xแทน y นั้นดีมากและในกรณีนี้ได้ช่วยคนหลายร้อยคน
แบรดโคช์ส

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

2
วิธีนี้ใช้ไม่ได้หากคุณมีเซิร์ฟเวอร์หลายเครื่องในคลัสเตอร์เดียวกันโชคไม่ดี ...
Vitor Baptista

2
สิ่งนี้ทำให้คุณมีหมายเลขพอร์ตไม่ใช่โฮสต์เซิร์ฟเวอร์
hd1

2
@ hd1: และ? คำถามคือ (เช่น) วิธีรับหมายเลขพอร์ต และนั่นคือสิ่งที่แบบสอบถามส่งคืน
a_horse_with_no_name

ใช่ แต่ถ้าคุณไม่สามารถเชื่อมต่อกับฐานข้อมูลคุณไม่สามารถดำเนินการได้: P
jaydel

137

คำสั่งนี้จะให้หมายเลขพอร์ต postgres แก่คุณ

 \conninfo

หาก postgres ทำงานบนเซิร์ฟเวอร์ Linux คุณสามารถใช้คำสั่งต่อไปนี้ได้

sudo netstat -plunt |grep postgres

หรือ (ถ้าเป็นไปรษณีย์)

sudo netstat -plunt |grep postmaster

และคุณจะเห็นสิ่งที่คล้ายกันเช่นนี้

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

ในกรณีนี้หมายเลขพอร์ตคือ 5432 ซึ่งเป็นหมายเลขพอร์ตเริ่มต้นด้วย

ลิงก์เครดิต


1
มันกำลังจะมาเป็น postmaster สำหรับ 5432
codebased

4
นี่คือคำตอบที่ถูกต้อง คำตอบที่เลือกนั้นเป็นจริง แต่ไม่เกี่ยวข้องกับคำถาม
Luis Martins

42

select inet_server_addr(); ให้ที่อยู่ IP ของเซิร์ฟเวอร์แก่คุณ


2
น่าเสียดายที่นี่ไม่ได้ให้ชื่อโฮสต์ "สด" หากคุณกำลังเชื่อมต่อผ่านพร็อกซี ssh - ฉันจะได้รับ "127.0.0.1"
Andrew Wolfe

8
ฉันไม่ได้รับอะไรเลย:$postgres=# select inet_server_addr(); inet_server_addr ------------------ (1 row)
trex

ไม่ได้ให้ชื่อโฮสต์
Kumar Vaibhav

15

select inet_server_port(); ให้พอร์ตของเซิร์ฟเวอร์แก่คุณ


3
บน bluehost แบบสอบถามนี้จะส่งคืนฟิลด์ว่างเมื่อในความเป็นจริงพอร์ตเป็น 5432 แบบสอบถามนี้จะไม่ส่งคืนหมายเลขพอร์ตเสมอ
Eric Leschinski

13
select inet_server_addr( ), inet_server_port( );

1
สิ่งนี้แตกต่างจากคำตอบของ Kaarel Kitsemets และคำตอบของ Andromida อย่างไร
คนงานทุกคนมีความจำเป็น

1
มันตอบคำถามที่ถูกถามว่าเป็นโซลูชันการคัดลอกและวางเดียว
gerardw

12

นี่เป็นวิธีที่ไม่ใช่ sql คำแนะนำจะได้รับในภาพตัวเอง เลือกเซิร์ฟเวอร์ที่คุณต้องการค้นหาข้อมูลเกี่ยวกับแล้วทำตามขั้นตอน

ป้อนคำอธิบายรูปภาพที่นี่


9

พอร์ต postgresql ถูกกำหนดไว้ในpostgresql.confไฟล์ ของคุณ

สำหรับฉันใน Ubuntu 14.04 มันคือ: /etc/postgresql/9.3/main/postgresql.conf

ข้างในมีบรรทัด:

port = 5432

การเปลี่ยนหมายเลขต้องมีการรีสตาร์ท postgresql เพื่อให้มีผล


5

คุณสามารถใช้คำสั่งใน psql \conninfo คุณจะได้รับYou are connected to database "your_database" as user "user_name" on host "host_name" at port "port_number".


3

จากเทอร์มินัลคุณสามารถทำได้:

\ conninfo

ฉันขอแนะนำให้อ่านเอกสารในรายการคำสั่งทั้งหมดโดยใช้:

\?


0

ไปที่ "Terminal" และเพียงแค่พิมพ์

service postgres status

ในผลลัพธ์คุณจะได้รับรายละเอียดพอร์ตกำลังเรียกใช้รายละเอียด postgres

ในกรณีของฉันมันทำงานบนพอร์ต "5432" (ค่าเริ่มต้น)
ฉันใช้ CentOS 7. หวังว่านี่จะช่วยได้


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

นี่ใช้ psql ที่สร้างขึ้นในตัวแปร HOST ซึ่งมีเอกสารอยู่ที่นี่

และ postgres ฟังก์ชั่นข้อมูลระบบเอกสารที่นี่


หากคุณกำลังเชื่อมต่อในประเทศจะเป็นไดเรกทอรีที่ใช้ระบบปฏิบัติการยูนิกซ์อยู่ซ็อกเก็ตโดเมนของคุณเช่นHOST /tmp
บิชอป

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.