Hmmm ...
Jika Anda dapat terhubung dengan nama pengguna dan kata sandi di pgAdminIII tetapi Anda tidak dapat terhubung dengan psql
kedua program tersebut mungkin terhubung ke database secara berbeda.
[Jika Anda terhubung ke database yang berbeda, pertama-tama cobalah menghubungkan ke database yang sama. Lihat di bawah.]
Dari PostgreSQL: Dokumentasi: 9.3: psql :
Jika Anda menghilangkan nama host, psql akan terhubung melalui soket domain Unix ke server di host lokal, atau melalui TCP / IP ke host lokal di mesin yang tidak memiliki soket domain Unix.
Jika Anda tidak menjalankan sesuatu seperti psql ... -h host_name ...
, dan Anda menjalankan Ubuntu, psql
harus terhubung melalui soket Unix-domain, jadi PostgreSQL mungkin tidak dikonfigurasikan untuk memungkinkan salah satu metode otentikasi kata sandi untuk pengguna postgres .
Anda dapat menguji ini dengan menjalankan:
sudo -u postgres psql
Jika cara di atas berfungsi, server Anda mungkin dikonfigurasikan untuk menggunakan otentikasi rekan untuk koneksi lokal oleh pengguna postgres , yaitu meminta OS untuk nama pengguna Anda untuk mengonfirmasi bahwa Anda postgres .
Jadi Ini Mungkin File pg_hba.conf Anda
Path lengkap file tersebut adalah sesuatu seperti /etc/postgresql/9.3/main/pg_hba.conf . Anda dapat melihatnya dengan, mis sudo cat /etc/postgresql/9.3/main/pg_hba.conf | more
.
Jika Anda menghilangkan nama host dalam psql
perintah Anda, Anda harus dapat terhubung jika Anda menambahkan entri berikut ke file pg_hba.conf Anda :
# Connection type Database User IP addresses Method
local all postgres md5
[Baris komentar dalam file pg_hba.conf dimulai dengan #
.]
Jika Anda sedang termasuk nama host di Anda psql
perintah, tambahkan entri ini sebagai gantinya:
# Connection type Database User IP addresses Method
host all postgres 127.0.0.1/32 md5
Anda harus meletakkan entri sebelum entri lain cocok dengan koneksi Anda via psql
. Jika ragu tentang di mana harus meletakkannya, taruh saja sebelum baris pertama yang tidak dikomentari.
Lebih lanjut tentang pg_hba.conf
Dari PostgreSQL: Dokumentasi: 9.3: File pg_hba.conf [tambang tebal]:
Catatan pertama dengan jenis koneksi yang cocok , alamat klien , database yang diminta , dan nama pengguna digunakan untuk melakukan otentikasi. Tidak ada "cadangan" atau "cadangan": jika satu catatan dipilih dan otentikasi gagal, catatan selanjutnya tidak dipertimbangkan. Jika tidak ada catatan yang cocok, akses ditolak.
Perhatikan bahwa catatan tidak cocok dengan metode otentikasi. Jadi, jika file pg_hba.conf Anda berisi entri berikut:
# Connection type Database User IP addresses Method
local all postgres peer
Maka Anda tidak akan dapat terhubung melalui:
psql -u postgres
Kecuali salah satu dari entri ini ada di file pg_hba.conf Anda di atas entri sebelumnya:
# 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!