PostgreSQL kullanıcı şifre değiştirdikten sonra sunucuya bağlanamıyor


10

Ben oluşturdum 4 rol ile tanıştım:
GUI (1) kullanarak pgAdmin III bir kullanıcı için parola değiştirdikten sonra, o kullanıcı artık oturum açamaz.
pgAdmin III hata mesajını göster:

An error has occurred:

Error connecting to the server: FATAL:  password authentication failed for user "sam"
FATAL:  password authentication failed for user "sam"

Sistemim: Ubuntu 12.04'te Postgresql 9.2

Bunu düzeltmenin bir yolu var mı?

(1): hesap postgres ile giriş yapın, Giriş Rolleri'nde kullanıcıyı sağ tıklayın, 'Tanım' sekmesine gidin ve şifre girin

Yanıtlar:


15

Bu PgAdmin hatası tarafından değiştirilmiş olabilirsiniz ( changelog ):

2012-11-28 AV 1.16.1 Tarih seçici kontrolleri varsayılan olarak tam bir zaman damgası döndürür, bu da işlerde yanlışlıkla rol değişikliklerine ve rol geçerlilik tarihlerine neden olabilir. Zaman bölümünü dikkate almayın.

Bu hatanın 1/1/1970 gibi geçmişte parola geçerlilik bitiş tarihlerini ayarladığı görülmüştür. Bu durumda, bağlanmaya çalışırken hata mesajı yanlış paroladan farklı değil.

Bu son kullanma tarihlerini aşağıdakilerle kontrol edebilirsiniz:

SELECT usename,valuntil FROM pg_user;

ve eğer yanılırlarsa, bunları ile sıfırlayın:

ALTER USER username VALID UNTIL 'infinity';

ve pgAdmin'i yükseltin.


Çok teşekkür ederim! Bu sorunu çözdü. Bir kullanıcı parolasını her sıfırladığımda, pgAdmin, kullanıcının artık oturum açamaması için geçerli olanı 01-01-1970 tarihine kadar ayarlar.
Cao Minh Tu

anladın! lanet olası hatalar
Carter Cole

Tam olarak nasıl psql giriş yapmam gerekiyor ??? Güncellediğim rol bu.
16:34

1
@ ericpeters0n: geçici olarak kimlik doğrulama yöntemini değiştirmek trustveya peeriçinde pg_hba.confbu hesap için dosyanın.
Daniel Vérité

Teşekkürler, sıraladım. Daha sonra gelenler için, "güven" şu anlama gelir: Postgres'i yeniden başlattıktan sonra, ayrıcalıklı bir kullanıcıyla (örneğin kullanıcı adı 'postgres') aynı adda bir kullanıcıysanız psql'yi şifre doğrulaması olmadan çalıştırabilirsiniz . Böylece, 'su - postgres psql' oturum açmanıza ve şifreyi veya geçerli tarihi düzeltmenize olanak tanır.
16:15, ericpeters0n

3

Yapılacak en basit şey psql veya pgAdmin ve

ALTER USER sam WITH PASSWORD 'new_password';

Şimdi, bir süper kullanıcı hesabıyla oturum açamıyorsanız, bu kullanıcı için pg_hba.conf ayarlarını değiştirerek ve yapılandırmayı yeniden yükleyerek kurtarabilirsiniz (bazen bunun sunucunun yeniden başlatılmasını gerektirir, ancak neden olduğundan emin değilim).

Yapabileceğiniz şey, kullanıcının yerel bağlantıları için ident (eşde 9.2) yöntemini (kullanıcıyla aynı adda bir yerel sistem hesabı kullanabiliyorsanız) veya (if mümkün değil) "güven" olarak ayarlayın (çok geçici!). Güven kullanıyorsanız, mümkün olan en kısa zamanda geri dönün, çünkü bu "kullanıcının iddia ettiği kişi olduğuna güven!" dolayısıyla bu ayarın acil kurtarma ihtiyaçlarının dışında etkin durumda bırakılması tehlikelidir.

Giriş yaptıktan sonra yukarıdaki şifreyi sıfırlayabilirsiniz.


PgAdmin aynı komutu uygulamamalı mı?
dezso

(psql veya pgAdmin demiştim. Daha açık hale getirmek için ne yapabilirim?)
Chris Travers

Hayır, hayır, sadece GUI'de parola değiştirmenin aynı şeyi yaptığını düşündüm. Eğer öyleyse neyin yanlış gidebileceğini hayal edemiyorum?
dezso

Ne ters gidebilir ki? Yeni başlayanlar için şifrede yazım ....
Chris Travers

Postgres olarak giriş yaptıktan sonra şifreyi tekrar ayarlayamaz mısınız?
dezso

2

Windows sürümü için - Bu kötü hatayı ben de sürüm 9.2 Windows x64 yüklemem için pgAdmin nedeniyle yaşadım. Üretimimi felç etti.

C:\Program Files\PostgreSQL\9.2\dataVeya klasöründe pg_hba.conf metin dosyasını C:\Program Files (x86)\PostgreSQL\9.**x**\databulacaksınız .

Aşağıdaki satırları bulun:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

ve METHOD md5'i şu şekilde "güven" olarak değiştirin:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust

Gönderen Windows>Runtürü "services.msc" ve sağ PostgreSQL örneğini bulmak ve yeniden başlatın [Enter].

DB güvenliğiniz artık tamamen açıldı! İlgili tüm kullanıcılar için 2099 yılı olarak adlandırılan kullanıcı parolası geçerlilik süresini değiştirdikten sonra md5'e döndürmek için uyarıyı dikkate alın.


1

Bunu henüz denemediyseniz, pg_hba.conf dosyanızı inceleyin. Buna /var/lib/pgsql/9.3/data/pg_hba.conf (Fedora 20); bulmak için 'find / -name pg_hba.conf' komutunu kullanmanız gerekebilir.

Dosyanın altında, yerel yöntem için 'YÖNTEM' değerlerini 'güven' olarak değiştirin (tam bilgi için postgres belgelerine bakın). Her şeyin temiz başlatılmasını ve yeni parametrelerin okunmasını sağlamak için makineyi yeniden başlatın.

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

GÜNCELLEME 2016-10-14:

Ubuntu'da gereken dosya adı /etc/postgresql/9.5/main/pg_hba.conf. Yalnızca yerel testler için aşağıdaki gibi değiştirin:

...
#
# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
# local   all             all                                     peer
  local   all             all                                     trust
# IPv4 local connections:
# host    all             all             127.0.0.1/32            md5
  host    all             all             127.0.0.1/32            trust

YÖNTEM "güven" olan iki satır yenidir. Kullanıcı adı / şifre olmadan bağlanmanıza izin verir.

Tamamlandığında, sunucuyu şu şekilde yeniden başlatmanız gerekir:

sudo systemctl restart postgresql 

İçin pg_hba.confetkili olması için, sadece yeniden yüklenmesine değil, bir yeniden başlatma gerekir. Ayrıca, sonunda sorunu nasıl çözeceği açık olmadığı için öneriniz eksik görünüyor.
dezso

1

Ben sadece aynı sorunu vardı ve aynı adı (farklı durumlarda) ile birden fazla kullanıcı olduğu ortaya çıktı. Sahipliği birleştirip kaldırdığımda, en azından açıktı. Bağlantı yöntemine bağlı olarak, kimlik doğrulama için davanın aktarılması zorunlu değildir.

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.