Saya telah menginstal PostgreSQL dan pgAdminIII pada kotak Ubuntu Karmic saya.
Saya berhasil menggunakan pgAdminIII (mis. Terhubung / masuk), namun ketika saya mencoba masuk ke server menggunakan nama pengguna / pwd yang sama pada baris perintah (menggunakan psql), saya mendapatkan kesalahan:
psql: FATAL: Ident authentication failed for user "postgres"
Adakah yang sekarang tahu bagaimana mengatasi masalah ini?
postgresql
morf
sumber
sumber
Jawaban:
Apakah Anda mengatur pengaturan yang tepat di pg_hba.conf?
Lihat https://help.ubuntu.com/stable/serverguide/postgresql.html cara melakukannya.
sumber
Langkah-langkah berikut berfungsi untuk pemasangan baru postgres 9.1 di Ubuntu 12.04. (Bekerja untuk postgres 9.3.9 juga di Ubuntu 14.04.)
Secara default, postgres membuat pengguna bernama 'postgres'. Kami masuk sebagai dia, dan memberinya kata sandi.
Logout
psql
dengan mengetik\q
atauctrl+d
. Kemudian kita terhubung sebagai 'postgres'. The-h localhost
Bagian penting : itu memberitahupsql
klien bahwa kita ingin menghubungkan menggunakan koneksi TCP (yang dikonfigurasi untuk menggunakan otentikasi password), dan bukan oleh koneksi PEER (yang tidak peduli tentang password).sumber
PGHOST=localhost
Anda tidak perlu menentukan-h
opsi setiap kali. Ini juga berfungsi denganpg_*
perintah lain sepertipg_dump
.Mengedit file
/etc/postgresql/8.4/main/pg_hba.conf
dan menggantiident
ataupeer
oleh salah satumd5
atautrust
, tergantung pada apakah Anda ingin meminta password pada komputer Anda sendiri atau tidak. Kemudian muat ulang file konfigurasi dengan:sumber
restart
berfungsi untuk saya, tidakreload
--- setelah perubahan ke/etc/postgresql/9.5/main/pg_hba.conf
(berubahpeer
menjaditrust
).Anda mendapatkan kesalahan ini karena Anda gagal otentikasi klien. Berdasarkan pesan kesalahan, Anda mungkin memiliki konfigurasi postgres default, yang menetapkan metode otentikasi klien ke "IDENT" untuk semua koneksi PostgreSQL.
Anda pasti harus membaca bagian 19.1 Otentikasi Klien dalam manual PostgreSQL untuk lebih memahami pengaturan otentikasi yang tersedia (untuk setiap catatan di pg_hba.conf ), tetapi di sini ada cuplikan yang relevan untuk membantu masalah yang Anda hadapi (dari versi 9.5 manual ):
Jadi ... untuk menyelesaikan masalah yang Anda alami, Anda dapat melakukan salah satu dari yang berikut:
Ubah metode otentikasi yang didefinisikan dalam
pg_hba.conf
file Anda menjaditrust
,,md5
ataupassword
(tergantung pada kebutuhan keamanan dan kesederhanaan Anda) untuk catatan koneksi lokal yang telah Anda tetapkan di sana.Perbarui
pg_ident.conf
untuk memetakan pengguna sistem operasi Anda ke pengguna PostgreSQL dan memberikan mereka hak akses yang sesuai, tergantung pada kebutuhan Anda.Biarkan pengaturan IDENT sendiri dan buat pengguna di basis data Anda untuk setiap pengguna sistem operasi yang ingin Anda beri akses. Jika pengguna sudah diautentikasi oleh OS dan login, PostgreSQL tidak akan memerlukan otentikasi lebih lanjut dan akan memberikan akses ke pengguna tersebut berdasarkan hak istimewa (peran) apa pun yang diberikan kepadanya dalam database. Ini adalah konfigurasi default.
Catatan: Lokasi
pg_hba.conf
danpg_ident.conf
tergantung pada OS.sumber
/etc/postgresql/9.6/main/pg_hba.conf
.Cukup menambahkan
-h localhost
bit itu semua milikku diperlukan untuk bekerjasumber
this_computer = 'http://localhost'
Anda dapat mengatur variabel lingkungan
PGHOST=localhost
:sumber
Seandainya tidak ada yang di atas bekerja untuk Anda:
Saya sudah melakukan beberapa instalasi Postgres, tetapi hari ini bingung dengan sistem RedHat 6.5 (menginstal Postgres 9.3). Konfigurasi hba.conf tipikal saya yang ditampilkan Aron di atas tidak berfungsi. Ternyata sistem saya menggunakan IPV6, dan mengabaikan konfigurasi IPV4. Menambahkan baris:
memungkinkan saya untuk masuk dengan sukses.
sumber
Dari semua jawaban di atas tidak ada yang berhasil untuk saya. Saya harus secara manual mengubah kata sandi pengguna dalam database dan tiba-tiba berhasil.
Saya menggunakan pengaturan berikut:
pg_hba.conf
Koneksi berhasil akhirnya untuk perintah berikut:
sumber
Saya menemukan bahwa saya harus menginstal server identitas, yang mendengarkan pada port 113.
Dan kemudian ident bekerja.
sumber
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 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 :[Baris komentar dalam file pg_hba.conf dimulai dengan
#
.]Jika Anda sedang termasuk nama host di Anda
psql
perintah, tambahkan entri ini sebagai gantinya: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]:
Perhatikan bahwa catatan tidak cocok dengan metode otentikasi. Jadi, jika file pg_hba.conf Anda berisi entri berikut:
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:
sumber
Dalam kasus saya, solusinya di sini: (untuk orang yang berkepentingan) login ke postgres:
salam
sumber
Masalahnya masih file pg_hba.conf Anda. Baris ini: Anda dapat menemukan file ini di / etc / postgres / varion / main
Ini adalah deskripsi singkat dari kedua opsi menurut dokumen resmi PostgreSQL tentang metode otentikasi.
Otentikasi rekan
Metode otentikasi rekan bekerja dengan memperoleh nama pengguna sistem operasi klien dari kernel dan menggunakannya sebagai nama pengguna basis data yang diizinkan (dengan pemetaan nama pengguna opsional). Metode ini hanya didukung pada koneksi lokal.
Otentikasi kata sandi
Metode otentikasi berbasis kata sandi adalah md5 dan kata sandi. Metode ini beroperasi dengan cara yang sama kecuali untuk cara kata sandi dikirim melalui koneksi, yaitu MD5-hashed dan clear-text.
Jika Anda sama sekali khawatir tentang serangan "sniffing" kata sandi maka md5 lebih disukai. Kata sandi polos harus selalu dihindari jika memungkinkan. Namun, md5 tidak dapat digunakan dengan fitur db_user_namespace. Jika koneksi dilindungi oleh enkripsi SSL maka kata sandi dapat digunakan dengan aman (meskipun otentikasi sertifikat SSL mungkin merupakan pilihan yang lebih baik jika tergantung pada penggunaan SSL).
Setelah mengubah file ini, jangan lupa untuk me-restart server PostgreSQL Anda. Jika Anda menggunakan Linux, itu mungkin
sudo service postgresql restart.
sumber
Untuk fedora26 dan postgres9.6
Pertama, login sebagai root pengguna lalu masuk ke psql dengan perintah berikut
kemudian
di
psql
cari lokasi hba_file ==> berartipg_hba.conf
dalam file
pg_hba.conf
ubah akses pengguna ke inisumber
solusi saya pada PostgreSQL 9.3 di Mac OSX di bash shell adalah menggunakan
sudo
untuk masuk ke folder data, dan kemudian menambahkan baris yang diperlukan kepg_hba.conf
file untuk memungkinkan semua pengguna dapat dipercaya dan dapat login. Inilah yang saya lakukan :sumber
Jika Anda telah melakukan semua ini dan itu masih tidak berhasil, periksa kadaluwarsa untuk pengguna itu:
Autentikasi kata sandi Postgres gagal
sumber
Saya telah menghabiskan lebih banyak waktu untuk menyelesaikan kesalahan ini yang ingin saya akui.
Urutan konfigurasi otentikasi dalam pg_hba.conf relevan untuk kasus Anda, saya pikir. File konfigurasi default mencakup beberapa baris dalam pemasangan vanilla. Default ini dapat cocok dengan kondisi upaya otentikasi Anda yang mengakibatkan kegagalan untuk mengotentikasi. Gagal terlepas dari konfigurasi tambahan yang ditambahkan di akhir file .conf.
Untuk memeriksa baris konfigurasi mana yang digunakan, pastikan untuk melihat file log default untuk pesan. Anda mungkin melihat sesuatu seperti ini
Ternyata garis default ini menyebabkan penolakan.
coba komentari.
sumber
Satu retas di sekitar ini adalah untuk mengedit pg_hba.conf
Untuk sementara
Pada titik ini Anda selesai. Untuk keamanan, lalu pergi dan
lalu kembali dan atur pg_hba.conf kembali ke
sumber
Saya memiliki masalah yang sama dan saya memperbaikinya di pg_hba.conf ketika menghapus semua metode ident bahkan untuk alamat IP6 (meskipun saya hanya memiliki IP4 pada mesin).
sumber
Saya memiliki masalah yang sama setelah mengikuti ini: Pengaturan PostgreSQL untuk pengembangan Rails di Ubuntu 12.04
Saya mencoba jawaban lain tetapi yang harus saya lakukan adalah di: "config / database.yml"
sumber
Jika Anda menggunakannya pada CentOS, Anda mungkin perlu memuat ulang postgres setelah membuat solusi di atas:
sumber
postgresql
systemctl status | grep postgres
Saya harus menginstal ulang pdAdmin untuk menyelesaikan masalah ini
sumber
Untuk Windows jika Anda tidak ingin mengedit pb_gba.conf yaitu meninggalkan metode ke MD5 (default), buat pengguna baru, dengan menjalankan kueri ini di alat Kueri di PGadmin
lalu dalam cmd
di mana dbname adalah db Anda di postgresql
sumber
Ini bekerja untuk saya: http://tecadmin.net/fatal-ident-authentication-failed-for-user-postgres/#
sumber