Ini berarti Postgres berusaha untuk mengotentikasi pengguna menggunakan protokol Ident, dan tidak bisa. Ident auth berfungsi seperti ini:
- Anda memiliki peran basis data 'foo' pada basis data 'db'
pg_hba.conf
File Anda (dalam /etc/postgres-something/main
) mendefinisikan 'Ident' sebagai protokol untuk terhubung ke database db
untuk pengguna yang terhubung dari host tertentu
- Nama pengguna unix yang membuat koneksi adalah 'foo'
- Ident server yang berjalan di mesin yang disambungkan pengguna mengkonfirmasi bahwa nama pengguna mereka benar-benar 'foo'
Kemungkinan penyebab dan solusi:
- Tidak ada server Ident yang berjalan pada mesin yang Anda coba sambungkan. Uji ini dengan mencoba menyambungkannya pada port 113. Jika itu gagal, instal server Ident (misalnya,
sudo apt-get install oidentd
).
- Ada server Ident, tetapi tidak ada peran basis data yang cocok dengan nama yang Anda coba sambungkan ('foo' dalam contoh di atas). Jadi buat itu dengan menghubungkan entah bagaimana ke database dengan hak superuser dan lakukan
CREATE ROLE foo
. Atau tambahkan entri ke /etc/postgresql/.../main/pg_ident.conf
.
- Mungkin nama pengguna shell tidak cocok dengan peran basis data. Anda mungkin dapat menguji ini dengan menghubungkan ke server Ident saat koneksi sedang berlangsung, dan melewati nomor port yang tepat.
Mungkin Anda sebenarnya ingin terhubung dengan kata sandi , bukan Ident. Edit pg_hba.conf
file dengan tepat. Misalnya, ubah:
host all all 127.0.0.1/32 ident
untuk
host all all 127.0.0.1/32 md5
/var/lib/psql/data
Tidak yakin tentang penyebab, tapi ini tetap untukku:
di
pg_hba.conf
ubah ke ini:
Kesalahan tepat:
Caused by: org.postgresql.util.PSQLException: FATAL: Ident authentication failed for user "postgres"
sumber
Pada CentOS, tambahkan baris berikut ke
/var/lib/pgsql/9.3/data/pg_hba.conf
:Dan mengomentari entri lainnya.
Tentu saja, pengaturan ini tidak aman, tetapi jika Anda hanya mengacaukan pada pengembangan VM seperti saya maka itu mungkin baik-baik saja ...
sumber
Jika Anda belum mencoba ini, tinjau file pg_hba.conf Anda. Ini akan dinamai sesuatu seperti /var/lib/pgsql/9.3/data/pg_hba.conf (Fedora 20); Anda mungkin harus menggunakan 'find / -name pg_hba.conf' untuk menemukannya.
Di bagian bawah file, ubah nilai 'METHOD' menjadi 'trust' untuk pengujian lokal (lihat dokumen postgres untuk informasi lengkap). Nyalakan ulang mesin untuk memastikan semuanya mulai bersih dan params baru dibaca.
Semoga ini akan menyembuhkan kesengsaraan Anda. Ini memecahkan masalah saya pada Fedora 20 dengan PostgreSQL 9.3.
sumber
pg_ctl reload
dari konsol, atauSELECT pg_reload_conf();
saat mengeksekusi SQL sebagai pengguna istimewa.