Saya telah mencoba menggunakan variable host PGPASSWORD
dan .pgpass
dan tak satu pun dari kedua akan memungkinkan saya untuk otentikasi ke database. Saya harus chmod
'd .pgpass
untuk izin yang sesuai dan juga mencoba:
export PGPASSWORD=mypass and PGPASSWORD=mypass
Kata sandi TIDAK mengandung \
namun saya membungkusnya dalam tanda kutip tunggal PGPASS='mypass\'
dan masih tidak akan mengotentikasi.
Saya sedang berlari:
pg_dump dbname -U username -Fc
dan saya masih menerima
pg_dump: [archiver (db)] connection to database "dbname" failed: FATAL: Peer authentication failed for user "username"
postgresql
pg-dump
Kosmonaut
sumber
sumber
Jawaban:
Solusi Cepat
Masalahnya adalah ia mencoba melakukan
peer
otentikasi lokal berdasarkan nama pengguna Anda saat ini. Jika Anda ingin menggunakan kata sandi, Anda harus menentukan nama host dengan-h
.Penjelasan
Ini karena hal berikut di
pg_hba.conf
Ini memberitahu Postgres untuk menggunakan
peer
otentikasi untuk pengguna lokal yang membutuhkan nama pengguna postgres agar sesuai dengan nama pengguna sistem Anda saat ini. Baris kedua mengacu pada koneksi yang menggunakan nama host dan akan memungkinkan Anda untuk mengotentikasi dengan kata sandi melaluimd5
metode ini.Konfigurasi Pengembangan Pilihan Saya
CATATAN : Ini seharusnya hanya digunakan pada workstation pengguna tunggal. Hal ini dapat menyebabkan kerentanan keamanan utama pada mesin produksi atau multi-pengguna.
Saat mengembangkan terhadap contoh postgres lokal, saya ingin mengubah metode otentikasi lokal saya menjadi
trust
. Ini akan memungkinkan koneksi ke postgres melalui soket unix lokal sebagai pengguna mana pun tanpa kata sandi. Ini dapat dilakukan hanya dengan mengubah dipeer
atastrust
dan memuat ulang postgres.sumber
sudo locate pg_hba.conf
- itu harus sudo karena pengguna postgres akan menjadi satu-satunya yang memiliki akses ke direktori (menurut saya).Terkadang Anda bisa menggunakan
sumber