Postgresql: otentikasi kata sandi gagal untuk "postgres" pengguna

431

Saya telah menginstal PostgreSQL 8.4, klien Postgres dan Pgadmin 3. Otentikasi gagal untuk pengguna "postgres" untuk klien konsol dan Pgadmin. Saya telah mengetik pengguna sebagai "postgres" dan kata sandi "postgres", karena berhasil sebelumnya. Tetapi sekarang otentikasi gagal. Saya melakukannya sebelum beberapa kali tanpa masalah ini. Apa yang harus saya lakukan? Dan apa yang terjadi?

psql -U postgres -h localhost -W
Password for user postgres: 
psql: FATAL:  password authentication failed for user "postgres"
FATAL:  password authentication failed for user "postgres"
I159
sumber
1
Dalam kasus saya, koneksi gagal karena kata sandi terlalu rumit ...
JJD
3
Pastikan untuk membaca sepenuhnya halaman ini. Saya harus melakukan beberapa hal agar ini berfungsi. Pertama, ALTERlangkahnya , lalu edit pg_hba.conffile saya , kemudian restart postgres .
elrobis
Pastikan juga Anda tidak memiliki dua instance Postgres yang berjalan: satu di Windows, satu di Docker. Docker tidak melaporkan kepada saya bahwa port sudah diambil. Jadi, alat terhubung ke mesin Windows Postgres, sedangkan di Docker postgers, semuanya baik-baik saja.
koppor

Jawaban:

750

Jika saya ingat dengan benar, pengguna postgrestidak memiliki kata sandi DB yang ditetapkan di Ubuntu secara default. Itu artinya, Anda dapat masuk ke akun itu hanya dengan menggunakan akun postgres pengguna OS .

Dengan asumsi, bahwa Anda memiliki rootakses pada kotak yang dapat Anda lakukan:

sudo -u postgres psql

Jika gagal dengan database "postgres" does not existskesalahan, maka kemungkinan besar Anda tidak berada di server Ubuntu atau Debian :-) Dalam hal ini cukup tambahkan template1perintah:

sudo -u postgres psql template1

Jika salah satu dari perintah tersebut gagal dengan kesalahan psql: FATAL: password authentication failed for user "postgres"maka periksa file /etc/postgresql/8.4/main/pg_hba.conf: Harus ada baris seperti ini sebagai baris non-komentar pertama:

local   all         postgres                          ident

Untuk versi PostgreSQL yang lebih baru identsebenarnya mungkin peer. Tidak apa-apa juga.

Di dalam psqlshell Anda dapat memberikan kata sandi kepada pengguna DB postgres :

ALTER USER postgres PASSWORD 'newPassword';

Anda dapat meninggalkan psqlshell dengan mengetik CtrlDatau dengan perintah \q.

Sekarang Anda harus bisa memberikan pgAdmin kata sandi yang valid untuk DB superuser dan itu akan senang juga. :-)

AH
sumber
Itu lebih baik, terima kasih! psql berhasil. Tetapi masih memiliki masalah dengan pgadmin3 - itu meminta saya kata sandi untuk pengguna root sistem saya. (Aneh bagi saya) pg_hba.conf seperti yang Anda katakan.
I159
Saya akan menambahkan untuk kemudian keluar dari konsol menggunakan '\ q'. Butuh waktu beberapa saat untuk menemukan itu :)
hakunin
2
Perhatikan, bahwa pg_hba.conf harus mengatur agar pengguna postgres diatur identagar langkah pertama dapat berfungsi. Jika Anda sudah mengaturnya ke md5 atau yang lain, Anda tidak akan bisa masuk otomatis.
Cerin
80
Sangat bagus. Untuk pengguna baru lainnya, JANGAN LUPA SEMIKOLON pada akhir baris ALTER USER.
itsol
3
@itsols Anda berkata: "Sangat bagus. Untuk pengguna baru lainnya, JANGAN LUPA SEMIKOLON pada akhir baris ALTER USER" ... Anda baru saja mengakhiri empat jam cobaan !! Aku merasa sangat bodoh dan sangat berterima kasih saat ini. :-D
frozenjim
148

Respons staf sudah benar, tetapi jika Anda ingin mengotomatisasi lebih lanjut dapat melakukannya:

$ sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'postgres';"

Selesai! Anda menyimpan User = postgres dan kata sandi = postgres.

Jika Anda tidak memiliki kata sandi untuk Pengguna postgres ubuntu lakukan:

$ sudo passwd postgres

Diego
sumber
Hati-hati jika kata sandi Anda mengandung karakter yang menarik seperti '!'
Brian Peterson
45

Ini membuat frustrasi, sebagian besar jawaban di atas benar tetapi mereka gagal menyebutkan Anda harus me-restart layanan database sebelum perubahan dalam file pg_hba.conf akan berpengaruh.

jadi jika Anda melakukan perubahan seperti yang disebutkan di atas:

local all postgres ident

kemudian restart sebagai root (pada centos sesuatu seperti layanan layanan postgresql-9.2 restart) sekarang Anda harus dapat mengakses db sebagai postgres pengguna

$psql
psql (9.2.4)
Type "help" for help.

postgres=# 

Semoga ini menambah info untuk pengguna postgres baru

Miguel Pereira
sumber
26
Pada jenis ubuntu: sudo service postgresql restart
Ann Kilzer
4
untuk penggunaan RHEL7sudo systemctl restart postgresql.service
Spechal
1
Bagaimana dengan di mac?
AustinT
1
Untuk mac,
periksa
Terima kasih Miguel. Saya telah menghapus sandi secara manual, dan pgAdmin saya tidak terhubung ke database sampai saya me-restart server postgres.
Ustin
20

Edit file pg_hba.conf, misalnya dengan sudo emacs /etc/postgresql/9.3/main/pg_hba.conf

Ubah semua metode otentikasi ke trust. Ubah Unix Password untuk pengguna "postgres". Mulai ulang Server. Login dengan psql -h localhost -U postgresdan gunakan kata sandi Unix yang baru diatur. Jika berhasil, Anda dapat mengatur ulang file pg_hba.conf ke nilai default.

stevek
sumber
1
Jika Anda benar-benar macet, ini adalah satu-satunya metode yang dijamin. Ubah semua metode untuk percaya, restart db, lalu sebagai root sudo su - postgres:, set / fix / unset password berikutnya untuk postgres db (dan di shell, jika perlu), kemudian kembalikan ke secure md5atau identmetode dan restart lagi sehingga nilainya tetap. By the way, pada Cent / RedHat 9.4 file tersebut berada di:/var/lib/pgsql/9.4/data/pg_hba.conf
PapaK
17

Bagi mereka yang menggunakannya pertama kali dan tidak memiliki informasi mengenai apa kata sandinya mereka dapat mengikuti langkah-langkah di bawah ini (dengan asumsi Anda berada di ubuntu):

  1. Buka file pg_hba.conf di/etc/postgresql/9.x/main

     sudo vi pg_hba.conf 

    2. Edit baris di bawah ini

     local   all             postgres                                peer

    untuk

     local   all             postgres                                trust
  2. Mulai ulang server

      sudo service postgresql restart
  3. Akhirnya Anda dapat masuk tanpa perlu kata sandi seperti yang ditunjukkan pada gambarAkhirnya Anda dapat masuk tanpa perlu kata sandi seperti yang ditunjukkan pada gambar

Ref di sini untuk info lebih lanjut

Jose Kj
sumber
12

Jika Anda mencoba masuk shell postgres sebagai pengguna postgres, maka Anda dapat menggunakan perintah berikut.

beralih ke pengguna postgres

# su - postgres

masuk ke psql

# psql

Semoga itu bisa membantu

geekgugi
sumber
3
su - postgresmeminta kata sandi pada posgresql 9.5 di Ubuntu 16.04
Prashanth Chandra
3
su - postgresadalah perintah yang disarankan oleh dokumentasi fedora resmi , tetapi saya juga mendapatkan prompt kata sandi. Untuk mendapatkan putaran yang saya mengikuti ini email forum postgres yang menggunakan perintah yang sama sebagai jawaban diterima di sini: sudo -u postgres psql. Jangan lupa init dan mulai server database.
icc97
11

Usahakan untuk tidak menggunakan parameter -W dan biarkan kata sandinya kosong. Terkadang pengguna dibuat tanpa kata sandi.

Jika itu tidak berhasil atur ulang kata sandi. Ada beberapa cara untuk melakukannya, tetapi ini bekerja pada banyak sistem:

$ su root
$ su postgres
$ psql -h localhost
> ALTER USER postgres with password 'YourNewPassword';
Francisco Puga
sumber
7

Sebagai patokan: ANDA TIDAK PERNAH AKAN MENETAPKAN PASSWORD UNTUK PENGGUNA POSTGRES .

Jika Anda membutuhkan akses pengguna super dari pgAdmin, buatlah pengguna super lain. Dengan begitu, jika kredensial untuk superuser itu dikompromikan, Anda selalu dapat ssh ke host database aktual dan secara manual menghapus superuser menggunakan

sudo -u postgres -c "DROP ROLE superuser;"
ardilgulez
sumber
1
Apa alasan aturan praktis ini?
Gershom
2
Sehingga Anda tidak akan pernah bisa memiliki semua pengguna super Anda terkompromikan.
ardilgulez
1
Bagaimana menyetel kata sandi untuk postgres menyebabkan semua pengguna super dikompromikan?
Gershom
4
pengaturan kata sandi tidak menyebabkan semua pengguna super dikompromikan tetapi tidak menetapkan kata sandi akan menjamin bahwa Anda tidak akan pernah memiliki semua pengguna super dikompromikan. alasannya adalah: ketika Anda tidak mengatur kata sandi, setiap upaya login kata sandi ke postgres pengguna akan ditolak sedangkan Anda masih dapat menggunakannya sendiri dengan kepercayaan.
ardilgulez
7

Setelah Anda berada di shell postgres Anda, Masukkan perintah ini

postgres=# \password postgres

Setelah memasukkan perintah ini, Anda akan diminta untuk mengatur kata sandi, cukup atur kata sandi lalu coba.

pengguna12023415
sumber
3

Ketika Anda menginstal postgresql, tidak ada kata sandi yang ditetapkan untuk postgres pengguna, Anda harus secara eksplisit mengaturnya di Unix dengan menggunakan perintah:

sudo passwd postgres

Ini akan menanyakan kata sandi sudo Anda dan kemudian memberi Anda kata sandi pengguna postgres baru. Sumber

Loaderon
sumber
0

Saya hanya ingin menambahkan bahwa Anda juga harus memeriksa apakah kata sandi Anda kedaluwarsa.

Lihat Autentikasi kata sandi Postgres gagal untuk detailnya.

Jorg
sumber
1
Harap tambahkan beberapa detail dan ringkasan dari apa yang disediakan tautan itu jika-kalau nanti tautan itu tidak ada lagi. Kalau tidak, ini kemungkinan akan ditandai sebagai jawaban berkualitas rendah / hanya tautan.
Tanner
Saya akan membaca ini: meta.stackexchange.com/questions/8231/…
Tanner
0

Berikut adalah beberapa kombinasi yang saya coba masuki:

# login via user foo
psql -Ufoo -h localhost

sudo -u postgres psql postgres

# user foo login to postgres db
psql -Ufoo -h localhost -d postgres
tokhi
sumber
0

Saya punya masalah serupa. Ubuntu meninggalkan saya masuk konsol dengan kata sandi untuk superuser. Kecuali ketika saya terhubung dengan -h localhost di perintah baris psql.

Saya Mengamati juga bahwa "localhost: 8080 / MyJSPSiteLogIn" - menunjukkan: Fatal: kesalahan autentikasi dengan pengguna "pengguna".

pg_hba.conf tidak masalah.

Saya mencatat ada dua versi postgres yang berjalan di layanan yang sama.

Diselesaikan - menghapus instalan versi inutil.

David Uvm
sumber
0

Saya telah menghadapi masalah serupa. Saat mengakses database apa pun, saya mendapatkan prompt di bawah ini setelah memperbarui kata sandi "otentikasi kata sandi gagal untuk pengguna" postgres "" di PGAdmin


Larutan:

  1. Matikan server postgres
  2. Jalankan kembali pgadmin
  3. pgadmin akan meminta kata sandi.
  4. Silakan masukkan kata sandi saat ini dari pengguna yang disebutkan

Semoga ini akan menyelesaikan masalah Anda

masukkan deskripsi gambar di sini

amoljdv06
sumber
-1

Saya harap ini akan membantu Anda dalam waktu singkat. Anda dapat mengubah kata sandi postgres sql dengan menggunakan perintah di bawah ini.

Perintah

sudo -u postgres psql

Dan selanjutnya Anda dapat memperbarui kata sandi

Perintah

Ubah kata sandi postgres pengguna 'YOUR_NEW_PASSWORD';

Sonu patel
sumber
1
Jawaban Anda hanya berisi informasi, yang telah ditambahkan: stackoverflow.com/a/7696398/8283469
L. Guthardt