PgAdmin III - Bagaimana cara terhubung ke database ketika kata sandi kosong?

21

Saya telah menginstal PostgreSQL 9.1 di PC saya (Win 7). Saya punya aplikasi Java kecil yang berhasil menghubungkannya dengan login=sadan password="". Koneksi berfungsi.

Namun, itu ditolak dari PgAdmin III itu sendiri. Saya mendapat:

Error connecting to the server: fe_sendauth: no password supplied

Bagaimana saya terhubung ke database saya dari PgAdmin III dengan kata sandi kosong?

EDIT

Ini hanya tes, bukan kode produksi.

Jérôme Verstrynge
sumber
Saya tidak tahu pasti, tetapi mudah untuk membayangkan bahwa PgAdmin tidak mendukung itu.
Peter Eisentraut
apakah aplikasi Java Anda pada klien yang sama dengan pgAdmin?
Jack Douglas
pertanyaan serupa
Jack Douglas

Jawaban:

10

Saya dapat terhubung ke instance postgres saya dari pgAdmin III tanpa kata sandi untuk pengguna apa pun termasuk pengguna super seperti postgres.

Karena Anda menghubungkan ok dari klien lain, tidak ada alasan Anda tidak dapat terhubung dari pgAdmin jika mereka berada di workstation yang sama - kecuali beberapa aturan firewall pada klien itu sendiri memungkinkan satu program tetapi tidak yang lain.

Jika masalahnya khusus untuk klien ini, Anda mungkin perlu mengubah satu atau lebih dari:

  • pg_hba.conf
host semua kepercayaan 192.168.0.nnn / 32
  • postgresql.conf
listen_addresses = '*'
  • firewall di server postgres Anda, mis. iptables:
-A INPUT -s 192.168.0.nnn -m state --state NEW -j ACCEPT

Tapi saya sarankan Anda tidak melakukan semua ini. Manual mengatakan yang berikut dengan alasan yang bagus:

otentikasi trust hanya cocok untuk koneksi TCP / IP jika Anda memercayai setiap pengguna di setiap mesin yang diizinkan untuk terhubung ke server oleh garis pg_hba.conf yang menentukan trust. Jarang masuk akal untuk menggunakan kepercayaan untuk koneksi TCP / IP selain dari localhost (127.0.0.1).

Sebaliknya, pertimbangkan:

  • menggunakan kata sandi dan identifikasi md5
  • tunneling port 5432 lewat ssh
Jack Douglas
sumber
31

Saya menemukan jawaban ini di tempat lain.

Jika DB Anda ada di host lokal, coba biarkan bidang host kosong dalam koneksi yang bertentangan dengan menggunakan "localhost" atau "127.0.0.1 ″. Ini memberitahu PgAdmin untuk terhubung melalui soket unix lokal alih-alih TCP.

Alex Jodidio
sumber
Mari kita tambahkan bahwa pertanyaan awal adalah tentang sistem Windows.
dezso
3
Ah ini persis seperti itu. Membiarkan host kosong berfungsi.
basicdays
Anda tidak dapat membiarkan bidang ini kosong, itu wajib.
Athlan
Sepertinya membiarkan bidang host kosong hanya berfungsi jika Anda memiliki peran dalam pg yang dinamai sebagai nama pengguna sistem Anda (di Linux). Kalau tidak, saya kira peta pengguna diperlukan.
1
Sempurna! Dengan instalasi baru postgresql dan pgadmin, ubah pg_hba.confuntuk mengatakan trustalih-alih peerdi baris ini - local all postgres trust, dan membiarkan bidang host dan kata sandi kosong di pgadmin membuat semuanya berfungsi! Saya berharap pgadmin akan menambahkan kotak centang untuk beralih ke soket daripada ini sulit ditemukan UI.
Anupam Jain