เชื่อมต่อของคุณล้มเหลวเนื่องจากโดยค่าเริ่มต้นpsqlเชื่อมต่อผ่านซ็อกเก็ต UNIX โดยใช้การตรวจสอบที่ต้องใช้ระบบปฏิบัติการยูนิกซ์ปัจจุบันจะมีชื่อผู้ใช้เช่นเดียวกับpeer psqlดังนั้นคุณจะต้องสร้างผู้ใช้ UNIX devแล้วลงชื่อเข้าdevใช้หรือใช้sudo -u dev psql test_developmentสำหรับเข้าถึงฐานข้อมูล (และไม่psqlควรถามรหัสผ่าน)
หากคุณไม่สามารถหรือไม่ต้องการสร้างผู้ใช้ UNIX เช่นถ้าคุณเพียงต้องการเชื่อมต่อกับฐานข้อมูลของคุณสำหรับการค้นหาเฉพาะกิจการบังคับใช้การเชื่อมต่อซ็อกเก็ตโดยใช้psql --host=localhost --dbname=test_development --username=dev(ดังที่คำตอบจาก @meyerson) จะแก้ปัญหาเฉพาะหน้าของคุณ
แต่ถ้าคุณตั้งใจที่จะบังคับใช้การพิสูจน์ตัวตนด้วยรหัสผ่านบนซ็อกเก็ต Unix แทนที่จะใช้วิธีเพียร์ให้ลองเปลี่ยนpg_hba.confบรรทัด * ต่อไปนี้:
จาก
# TYPE DATABASE USER ADDRESS METHOD
local all all peer
ถึง
# TYPE DATABASE USER ADDRESS METHOD
local all all md5
แน่นอนคุณสามารถสร้างกฎเฉพาะสำหรับฐานข้อมูลหรือผู้ใช้ที่เฉพาะเจาะจงยิ่งขึ้นด้วยผู้ใช้บางคนมีpeerและอื่น ๆ ที่ต้องการรหัสผ่าน
หลังจากเปลี่ยนแปลงpg_hba.confหาก PostgreSQL ทำงานอยู่คุณจะต้องทำการอ่านการกำหนดค่าอีกครั้งโดยการโหลดใหม่ ( pg_ctl reload) หรือเริ่มใหม่ ( sudo service postgresql restart)
* ไฟล์pg_hba.confน่าจะอยู่ที่/etc/postgresql/9.x/main/pg_hba.conf
แก้ไข: ข้อสังเกตจาก @Chloe, @JavierEH, @Jonas Eicher, @fccoelho, @Joanis, @Uphill_ ความคิดเห็นที่รวมกันเป็นคำตอบ