อืม ...
หากคุณสามารถเชื่อมต่อกับชื่อผู้ใช้และรหัสผ่านใน pgAdminIII แต่คุณไม่สามารถเชื่อมต่อได้ psql
ดังนั้นโปรแกรมสองโปรแกรมนั้นอาจเชื่อมต่อกับฐานข้อมูลต่างกัน
[หากคุณกำลังเชื่อมต่อกับฐานข้อมูลอื่นก่อนอื่นให้ลองเชื่อมต่อกับฐานข้อมูลเดียวกัน ดูด้านล่าง]
จากPostgreSQL: เอกสารประกอบ: 9.3: psql :
หากคุณไม่ใช้ชื่อโฮสต์ psql จะเชื่อมต่อผ่านซ็อกเก็ต Unix-domain กับเซิร์ฟเวอร์บนโลคัลโฮสต์หรือผ่าน TCP / IP ไปยัง localhost บนเครื่องที่ไม่มีซ็อกเก็ต Unix-domain
หากคุณไม่ได้ใช้งานสิ่งpsql ... -h host_name ...
ใดและคุณกำลังใช้งาน Ubuntu psql
ควรเชื่อมต่อผ่านซ็อกเก็ต Unix-domain ดังนั้น PostgreSQL อาจไม่ได้รับการกำหนดค่าให้ใช้วิธีการตรวจสอบรหัสผ่านอย่างใดอย่างหนึ่งสำหรับpostgresผู้ใช้
คุณสามารถทดสอบสิ่งนี้ได้โดยเรียกใช้:
sudo -u postgres psql
หากการทำงานข้างต้นเซิร์ฟเวอร์ของคุณอาจได้รับการกำหนดค่าให้ใช้การรับรองความถูกต้องแบบเพียร์สำหรับการเชื่อมต่อท้องถิ่นโดยผู้ใช้postgresเช่นขอให้ระบบปฏิบัติการชื่อผู้ใช้ของคุณเพื่อยืนยันว่าคุณกำลังpostgres postgres
ดังนั้นมันอาจเป็นไฟล์pg_hba.confของคุณ
เส้นทางที่เต็มรูปแบบของไฟล์จะเป็นสิ่งที่ชอบ /etc/postgresql/9.3/main/pg_hba.conf sudo cat /etc/postgresql/9.3/main/pg_hba.conf | more
คุณสามารถดูได้โดยเช่น
หากคุณไม่ใช้ชื่อโฮสต์ในpsql
คำสั่งคุณควรจะสามารถเชื่อมต่อได้หากคุณเพิ่มรายการต่อไปนี้ในไฟล์pg_hba.confของคุณ:
# Connection type Database User IP addresses Method
local all postgres md5
[บรรทัดที่มีความคิดเห็นในไฟล์pg_hba.confเริ่มต้นด้วย#
]
หากคุณกำลังรวมทั้งชื่อโฮสต์ของคุณในpsql
คำสั่งเพิ่มรายการนี้แทน:
# Connection type Database User IP addresses Method
host all postgres 127.0.0.1/32 md5
คุณจะต้องใส่รายการก่อนรายการอื่น ๆ psql
ที่มีการจับคู่สำหรับการเชื่อมต่อของคุณผ่านทาง หากมีข้อสงสัยเกี่ยวกับสถานที่ที่จะนำมันเพียงแค่ใส่มันก่อนที่บรรทัดแรกที่ไม่มีความคิดเห็น
เพิ่มเติมเกี่ยวกับpg_hba.conf
จากPostgreSQL: เอกสารประกอบ: 9.3: ไฟล์ pg_hba.conf [เหมืองที่เน้นความหนา]:
ระเบียนแรกกับการจับคู่ประเภทการเชื่อมต่อ , ที่อยู่ของลูกค้า , ฐานข้อมูลที่ร้องขอและชื่อผู้ใช้จะใช้ในการดำเนินการตรวจสอบ ไม่มี "fall-through" หรือ "backup": หากเลือกหนึ่งระเบียนและการรับรองความถูกต้องล้มเหลวจะไม่มีการพิจารณาระเบียนที่ตามมา หากไม่มีการบันทึกที่ตรงกันการเข้าถึงจะถูกปฏิเสธ
โปรดทราบว่าบันทึกไม่ตรงกับวิธีการรับรองความถูกต้อง ดังนั้นหากไฟล์pg_hba.confของคุณมีรายการต่อไปนี้:
# Connection type Database User IP addresses Method
local all postgres peer
จากนั้นคุณจะไม่สามารถเชื่อมต่อผ่าน:
psql -u postgres
หากไม่มีหนึ่งในรายการเหล่านี้อยู่ในไฟล์pg_hba.confของคุณเหนือรายการเดิม:
# Connection type Database User IP addresses Method
local all postgres md5
local all postgres password # Unencrypted!
local all all md5
local all all password # Unencrypted!