Doğru şekilde kimlik doğrulaması için pg_dump'ı nasıl alabilirim


100

Ben ev sahibi değişkeni kullanarak denedi PGPASSWORDve .pgpassve ne bu ikisinden beni veritabanına kimlik doğrulaması sağlayacaktır. Ben chmod'd .pgpassuygun izinlere ve ayrıca çalıştı:

export PGPASSWORD=mypass and PGPASSWORD=mypass

Parola bir içeriyor, \ancak ben tek tırnak içine alıyordum PGPASS='mypass\'ve yine de kimlik doğrulaması yapmayacak.

Koşuyorum:

pg_dump dbname -U username -Fc

ve hala alıyorum

pg_dump: [archiver (db)] connection to database "dbname" failed: FATAL:  Peer authentication failed for user "username"

1
Hata mesajının "... Eş kimlik doğrulaması ..." kısmı, parola kimlik doğrulamasını hiç kullanmadığı anlamına gelir .
Milen A. Radev

Yanıtlar:


199

Hızlı Çözüm

Sorun, peermevcut kullanıcı adınıza göre yerel kimlik doğrulaması yapmaya çalışmasıdır . Bir parola kullanmak isterseniz, ana bilgisayar adını ile belirtmelisiniz -h.

pg_dump dbname -U username -h localhost -F c

Açıklama

Bu, sizin pg_hba.conf

local   all             all                                     peer
host    all             all             127.0.0.1/32            md5

Bu, Postgres'e peerpostgres kullanıcı adının mevcut sistem kullanıcı adınızla eşleşmesini gerektiren yerel kullanıcılar için kimlik doğrulamasını kullanmasını söyler . İkinci satır, bir ana bilgisayar adı kullanan bağlantılara atıfta bulunur ve md5yöntem aracılığıyla bir şifre ile kimlik doğrulamanıza izin verir .

Tercih Edilen Geliştirme Yapılandırmam

NOT : Bu yalnızca tek kullanıcılı iş istasyonlarında kullanılmalıdır. Bu, bir üretim veya çok kullanıcılı makinede büyük bir güvenlik açığına yol açabilir.

Yerel bir postgres örneğine karşı geliştirme yaparken yerel kimlik doğrulama yöntemimi olarak değiştirmeyi seviyorum trust. Bu, şifresiz herhangi bir kullanıcı olarak yerel bir unix soketi aracılığıyla postgres'e bağlanmaya izin verecektir. peerYukarıdakileri değiştirip trustpostaları yeniden yükleyerek yapılabilir.

# Don't require a password for local connections
local   all             all                                     trust

6
Conf dosyanızın nerede olduğundan emin olmayanlar için: use sudo locate pg_hba.conf- sudo olmalıdır, çünkü postgres kullanıcısı dizine erişimi olan tek kişi olacaktır (sanırım).
jcollum

Komutunuz benim için çalıştı ama nerede olduğunu veya dosyanın adını bulamıyorum, bu dosyayı nasıl bulabilirim?
Sobhan

Postgres'imi Docker içinde yapılandırırsam, bu kurulum yerel ana makinemden gelen bağlantılar için çalışır mı?
Jack Chi

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.