Koneksi Anda gagal karena secara default psqlmenghubungkan melalui soket UNIX menggunakan peerotentikasi, yang mengharuskan pengguna UNIX saat ini memiliki nama pengguna yang sama psql. Jadi, Anda harus membuat pengguna UNIX devdan kemudian login sebagai devatau gunakan sudo -u dev psql test_developmentuntuk mengakses database (dan tidakpsql harus meminta kata sandi).
Jika Anda tidak dapat atau tidak ingin membuat pengguna UNIX, seperti jika Anda hanya ingin terhubung ke database Anda untuk permintaan ad hoc , memaksa koneksi soket menggunakan psql --host=localhost --dbname=test_development --username=dev(seperti yang ditunjukkan oleh @meyerson jawaban) akan menyelesaikan masalah langsung Anda.
Tetapi jika Anda bermaksud memaksakan otentikasi kata sandi pada soket Unix alih-alih metode peer, coba ubah pg_hba.confbaris * berikut ini :
dari
# TYPE DATABASE USER ADDRESS METHOD
local all all peer
untuk
# TYPE DATABASE USER ADDRESS METHOD
local all all md5
peerberarti akan mempercayai identitas (keaslian) pengguna UNIX. Jadi tidak meminta kata sandi.
md5berarti akan selalu meminta kata sandi, dan memvalidasi setelah hashing dengan MD5.
Anda dapat, tentu saja, juga membuat aturan yang lebih spesifik untuk basis data atau pengguna tertentu, dengan beberapa pengguna memiliki peerdan lainnya memerlukan kata sandi.
Setelah mengubah pg_hba.confjika PostgreSQL berjalan, Anda harus membuatnya membaca ulang konfigurasi dengan memuat ulang ( pg_ctl reload) atau memulai ulang ( sudo service postgresql restart).
* File pg_hba.confkemungkinan besar akan berada di/etc/postgresql/9.x/main/pg_hba.conf
Diedit: Komentar dari @Chloe, @JavierEH, @Jonas Eicher, @fccoelho, @Joanis, @Uphill_What komentar dimasukkan ke dalam jawaban.