Postgres hata mesajı: FATAL: “…” kullanıcısı için kimlik doğrulama başarısız oldu


Yanıtlar:


36

Bu, Postgres’in Ident protokolünü kullanarak bir kullanıcının kimliğini doğrulamaya çalıştığı ve yapamayacağı anlamına gelir. Ident auth şu şekilde çalışır:

  • 'Db' ​​veritabanında 'foo' veritabanı rolüne sahipsiniz
  • Kişisel pg_hba.conf(dosya /etc/postgres-something/mainprotokolü olarak tanımladığı 'Ident') veritabanına bağlanmak için dbbazı ana hücrelerden bağlantı kullanıcıları için
  • Bağlantıyı yapan unix kullanıcı adı 'foo'
  • Kullanıcının bağladığı makinede çalışan bir Ident sunucusu, kullanıcı adının gerçekten 'foo' olduğunu onaylar

Muhtemel sebepler ve çözümler:

  1. Orada hiçbir Ident sunucu size bağlanmak için çalışıyoruz makinede çalışan. 113 numaralı bağlantı noktasına bağlanmaya çalışarak bunu test edin. Bu başarısız olursa, bir Ident server (örn sudo apt-get install oidentd.) Kurun .
  2. Bir Kimlik sunucusu var, ancak bağlanmaya çalıştığınız adla eşleşen bir veritabanı rolü yok (yukarıdaki örnekte 'foo'). Yani bir şekilde veritabanına superuser hakları ile bağlanarak yapın ve yapın CREATE ROLE foo. Alternatif olarak, bir giriş ekleyin /etc/postgresql/.../main/pg_ident.conf.
  3. Belki de kabuk kullanıcı adı veritabanı rolüyle eşleşmiyor . Sen Bunu test etmek mümkün olabilir bir bağlantı devam ederken Ident sunucusuna bağlanma ve sağ noktası numaralarını geçirerek.
  4. Belki de bir şifre ile bağlanmak istiyorsun , Ident değil. pg_hba.confDosyayı uygun şekilde düzenleyin. Örneğin, değiştirin:

    host all all 127.0.0.1/32 ident
    

    için

    host all all 127.0.0.1/32 md5
    

2
Fedora için, dosya içinde/var/lib/psql/data
Anwar

Sanırım hiç kimse postgres'in neden varsayılan kimlik bilgisi olarak 'ident' kullandığını cevaplamak ister mi?
icc97

Çünkü bu 20 yıl önce mantıklıydı ve hiçbir şey * nix'te değişmedi? :)
Steve Bennett

@ icc97, bu cevaptaki hiçbir şey "ident" ın Postgres için varsayılan giriş olduğunu göstermez; Bu fikri nereden edindin? Bir Postgres kümesindeki varsayılan süper kullanıcı rolü adını bildiğim kadarıyla "postgres" dir.
Joker,

9

Nedenlerden emin değilim, ama bu benim için düzeltti:

içinde pg_hba.conf

bununla değiştir:

tüm 127.0.0.1/32 md5’e ev sahipliği yaptı

Tam hata: Caused by: org.postgresql.util.PSQLException: FATAL: Ident authentication failed for user "postgres"


1
"ident" değiştirme -> "md5" benim için yaptı
webwesen 23:13

3

CentOS'ta, aşağıdaki satırı şuraya ekleyin /var/lib/pgsql/9.3/data/pg_hba.conf:

host all all 127.0.0.1/32 trust

Ve diğer girişleri yorumlayın.

Tabii ki, bu ayar güvenli değil , ama sadece benim gibi bir geliştirme sanal makinesini karıştırıyorsanız, o zaman muhtemelen ...


0

Bunu daha önce denemediyseniz, pg_hba.conf dosyanızı inceleyin. /Var/lib/pgsql/9.3/data/pg_hba.conf (Fedora 20); bulmak için 'find / -name pg_hba.conf' kullanmanız gerekebilir.

Dosyanın altında, yerel test için 'METHOD' değerlerini 'güven' olarak değiştirin (tam bilgi için postgres belgelerine bakın). Her şeyin temiz şekilde başlatıldığından ve yeni paramların okundığından emin olmak için makineyi yeniden başlatın.

Umarım bu, sıkıntılarınızı iyileştirir. Fedora 20'deki problemlerimi PostgreSQL 9.3 ile çözdü.


PostgreSQL yapılandırmalarını değiştirirken tüm makinenizi yeniden başlatmanız gerekmez. Bunun yerine, pg_ctl reloadkonsoldan kullanmayı veya SELECT pg_reload_conf();ayrıcalıklı bir kullanıcı olarak SQL çalıştırırken deneyin .
benjwadams
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.