/etc/services
เป็นเพียงคำแนะนำเท่านั้นเป็นรายชื่อพอร์ตที่รู้จักกันดี ไม่ได้หมายความว่ามีสิ่งใดกำลังทำงานอยู่บนพอร์ตนั้นจริงหรือบริการที่ระบุชื่อจะทำงานบนพอร์ตนั้น
ในกรณีของ PostgreSQL เป็นเรื่องปกติที่จะใช้พอร์ต 5432 หากมี หากไม่เป็นเช่นนั้นโปรแกรมติดตั้งส่วนใหญ่จะเลือกพอร์ตว่างถัดไปโดยปกติคือ 5433
คุณสามารถดูสิ่งที่กำลังทำงานอยู่โดยใช้netstat
เครื่องมือ (มีให้ใน OS X, Windows และ Linux โดยมีไวยากรณ์บรรทัดคำสั่งที่แตกต่างกันไปทั้งสาม)
สิ่งนี้มีความซับซ้อนมากขึ้นในระบบ MacOS X โดยความยุ่งเหยิงที่น่ากลัวของแพ็คเกจ PostgreSQL ที่แตกต่างกัน - PostgreSQL เวอร์ชันเก่าของ Apple ที่สร้างขึ้นในระบบปฏิบัติการ, Postgres.app, Homebrew, Macports, ตัวติดตั้ง EnterpriseDB เป็นต้น
สิ่งที่เกิดขึ้นคือผู้ใช้ติดตั้ง Pg และเริ่มเซิร์ฟเวอร์จากแพ็คเกจเดียว แต่ใช้psql
และlibpq
ไคลเอนต์จากบรรจุภัณฑ์อื่น โดยทั่วไปสิ่งนี้จะเกิดขึ้นเมื่อพวกเขาใช้ Postgres.app หรือ homebrew Pg และเชื่อมต่อกับpsql
ที่มาพร้อมกับระบบปฏิบัติการ บางครั้งสิ่งเหล่านี้ไม่เพียง แต่มีพอร์ตเริ่มต้นที่แตกต่างกัน แต่ Pg ที่มาพร้อมกับ Mac OS X มีเส้นทางซ็อกเก็ต unix เริ่มต้นที่แตกต่างกันดังนั้นแม้ว่าเซิร์ฟเวอร์จะทำงานบนพอร์ตเดียวกัน แต่ก็จะไม่ฟังซ็อกเก็ต Unix เดียวกัน
ผู้ใช้ Mac ส่วนใหญ่สามารถแก้ไขปัญหานี้ได้โดยใช้ tcp / ip กับpsql -h localhost
ไฟล์. psql -h localhost -p 5433
นอกจากนี้คุณยังสามารถระบุพอร์ตถ้าจำเป็นต้องใช้เช่น คุณอาจมีกรณี PostgreSQL ทำงานหลายเพื่อให้แน่ใจว่าคุณกำลังเชื่อมต่อกับหนึ่งที่เหมาะสมโดยใช้และselect version()
SHOW data_directory;
คุณยังสามารถระบุไดเร็กทอรีซ็อกเก็ต unix; ตรวจสอบunix_socket_directories
การตั้งค่าของอินสแตนซ์ PostgreSQL คุณต้องการที่จะเชื่อมต่อและระบุว่ามีการเช่นpsql -h
psql -h /tmp
วิธีแก้ปัญหาที่สะอาดกว่าคือการแก้ไขระบบของคุณPATH
เพื่อให้psql
และlibpq
เชื่อมโยงกับ PostgreSQL ที่คุณใช้งานอยู่จริงคือสิ่งที่พบเป็นอันดับแรกในไฟล์PATH
. รายละเอียดนั้นขึ้นอยู่กับเวอร์ชัน Mac OS X ของคุณและแพ็คเกจ Pg ที่คุณติดตั้งไว้ ฉันไม่ได้ใช้ Mac และไม่สามารถให้รายละเอียดเพิ่มเติมในด้านนั้นได้โดยไม่ต้องใช้เวลามากกว่าที่มีอยู่ในปัจจุบัน
PGPORT
มีการกำหนดตัวแปรสภาพแวดล้อมหรือไม่: postgresql.org/docs/current/static/libpq-envars.html