Autentikasi kata sandi Postgres gagal

36

Saya telah menginstal PostgreSQL 9.1 dan pgadmin3 di Ubuntu Server 13.10.

Saya mengkonfigurasi postgresql.conf dengan: listen_addresses = '*'

Saya juga mengkonfigurasi ph_hba.conf dengan mengubah koneksi peer ke md5

Ditambah lagi, saya mengatur ulang kata sandi postgres dengan: sudo password postgres

kemudian memulai kembali layanan dengan sudo /etc/init.d/postgresql restart

setelah itu saya mencoba untuk terhubung ke database templat PostgreSQL default:

sudo -u postgres psql template1

tetapi login gagal dengan pesan kesalahan ini:

psql: FATAL:  password authentication failed for user "postgres"

kemudian saya mencoba masuk dari pgadmin, yang memberi saya kesalahan yang sama.

Saya sudah baca di sini bahwa mungkin tanggal kadaluwarsa kata sandi bug Pengguna PostgreSQL tidak dapat terhubung ke server setelah mengubah kata sandi

tapi saya tidak bisa menyelesaikannya karena saya tidak bisa masuk dengan psql. Adakah yang sekarang tahu bagaimana mengatasi masalah ini?

EDIT

file ph_hba:

sini

Tangkapan layar:

masukkan deskripsi gambar di sini

Shadin
sumber
7
Saya cukup jengkel dengan kenyataan bahwa Anda telah mengkloning posting ini. Saya baru saja menulis jawaban untuk ini, hanya untuk menemukan bahwa Anda juga memposting pertanyaan yang sama ke stackoverflow.com yang sudah memiliki jawaban yang diterima. Jangan menyalin dan menempelkan jawaban di antara situs, Anda membuang-buang waktu semua orang dan mempersulit untuk menemukan informasi. Jika Anda bersikeras melakukan ini, buat tautan di antara mereka.
Craig Ringer
Tautan SO: stackoverflow.com/q/21483540/398670
fossfreedom

Jawaban:

66

Anda membingungkan kata sandi untuk "postgres" pengguna unix dengan kata sandi database untuk "postgres" pengguna basis data. Ini tidak sama.

Anda telah mengunci diri, karena Anda mengaktifkan md5otentikasi untuk pengguna basis data postgrestanpa menetapkan kata sandi untuk pengguna basis data postgres.

Tambahkan baris baru ke atas pg_hba.conf:

local    postgres     postgres     peer

kemudian restart / muat ulang PostgreSQL dan:

sudo -u postgres psql

Dari prompt yang dihasilkan:

ALTER USER postgres PASSWORD 'my_postgres_password';

kemudian hapus baris yang Anda tambahkan ke pg_hba.confdan restart Pg lagi. Anda sekarang dapat menggunakan kata sandi yang Anda atur di atas untuk terhubung ke PostgreSQL sebagai postgrespengguna.

Untuk mempelajari lebih lanjut, baca bab "otentikasi klien" pada buku petunjuk dan dokumen yang ada dipg_hba.conf .

Craig Ringer
sumber
1
Menguji pg9.6.6 baru di server UBUNTU 16 LTS .... Dan saya terkejut dengan semua "masalah pemula" ini. Tiba di sini dengan solusinya ... Lakukan langkah demi langkah ... Kejutan besar: tidak bekerja! psql -W postgresql://postgres:postgres@localhostmemproduksi lagi yang sama "FATAL: otentikasi kata sandi gagal untuk 'postgres' pengguna"
Peter Krauss
Solusi: semua jalur kepercayaan berfungsi ...
Peter Krauss
Saya menggunakan ssh ... Setelah mengembalikan semua ke md5, satu per satu (lokal, lokal, host ...), hanya baris "host semua 127.0.0.1/32 kepercayaan" tidak dapat berubah, dilestarikan dengan " kepercayaan". Jadi, pertanyaan baru: mengapa?
Peter Krauss
yang pg_hba.conffile milik pengguna sistem postgres. Saya hanya tahu kata sandi basis data pengguna basis data postgres, Jadi pertanyaannya adalah bagaimana cara mengedit file conf ini tanpa mengubah kepemilikannya?
Shailen
Bisakah Anda jelaskan, untuk apa garis itu local postgres postgres peerbenar-benar diperlukan pg_hba.conf? Semuanya berfungsi dengan baik tanpa itu
MaxCore
3

Cobalah untuk memodifikasi kata sandi templat basis data1 menggunakan ini:

$ psql -c "ALTER USER postgres WITH PASSWORD 'yourPassword'" -d template1
pugauga
sumber
Memberi saya kesalahan yang sama tetapi dengan pengguna "root" alih-alih pengguna "postgres"
Shadin
Bisakah Anda menjelaskan mengapa ini bisa membantu?
xliiv
2

di pg_hba.conf Anda

# IPv4 local connections:
# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
host    all         all         127.0.0.1/32         trust

jika tidak berhasil maka coba dengan

host    all         all         your_ip/32         trust

kemudian restart basis data Anda itu akan berfungsi dengan baik .. jika Anda percaya maka tidak perlu kata sandi jika Anda membuat MD5 maka akan meminta kata sandi ...

smn_onrocks
sumber
3
jangan gunakan pendekatan ini di mana pun, Anda harus selalu membatasi akses pengguna ke data Anda
Most Wanted
kecuali Anda menjalankan server KKP.
Pathfinder