Postgresql: “postgres” kullanıcısı için şifre kimlik doğrulaması başarısız oldu


431

PostgreSQL 8.4, Postgres istemcisi ve Pgadmin 3'ü kurdum. Hem konsol istemcisi hem de Pgadmin için kullanıcı "postgres" için kimlik doğrulama başarısız oldu. Daha önce çalıştığı için kullanıcıyı "postgres" ve "postgres" şifresi olarak yazdım. Ancak şimdi kimlik doğrulama başarısız. Bu sorunu olmadan birkaç kez önce yaptım. Ne yapmalıyım? Peki ne olacak?

psql -U postgres -h localhost -W
Password for user postgres: 
psql: FATAL:  password authentication failed for user "postgres"
FATAL:  password authentication failed for user "postgres"

1
Benim durumumda bağlantı başarısız olduğu için parola çok karmaşık ...
JJD

3
Bu sayfayı sonuna kadar okuduğunuzdan emin olun. Bunu yapabilmek için birkaç şey yapmam gerekiyordu. İlk olarak, ALTERadım , sonra benim düzenleme pg_hba.confdosyayı daha sonra, postgres yeniden başlatmayı .
elrobis


Ayrıca çalışan iki Postgres örneğiniz olmadığından emin olun: biri Windows'ta, diğeri Docker'da. Docker, limanın önceden alındığını bana bildirmedi. Yani, Windows makine Postgres'e bağlı olan araç, Docker posterlerinde ise her şey yolundaydı.
koppor

Yanıtlar:


750

Doğru hatırlıyorsam, kullanıcının Ubuntu üzerinde varsayılan olarak ayarlanmış bir DB şifresi postgresyoktur . Bu, yalnızca OS kullanıcı hesabını kullanarak bu hesaba giriş yapabileceğiniz anlamına gelir .postgres

rootKutuya erişiminiz olduğunu varsayarak şunları yapabilirsiniz:

sudo -u postgres psql

Bu bir database "postgres" does not existshata ile başarısız olursa , büyük olasılıkla bir Ubuntu veya Debian sunucusunda değilsiniz :-) Bu durumda sadece template1komuta ekleyin :

sudo -u postgres psql template1

Bu komutlardan herhangi biri bir hata ile başarısız olursa psql: FATAL: password authentication failed for user "postgres", dosyayı kontrol edin /etc/postgresql/8.4/main/pg_hba.conf: İlk yorum yapmayan satır olarak böyle bir satır olmalıdır:

local   all         postgres                          ident

PostgreSQL'in yeni sürümleri için identaslında olabilir peer. Bu da sorun değil.

psqlKabuğun içinde DB kullanıcısına postgres bir şifre verebilirsiniz :

ALTER USER postgres PASSWORD 'newPassword';

psqlKabuğu yazarak CtrlDveya komutla bırakabilirsiniz \q.

Şimdi pgAdmin'e DB süper kullanıcısı için geçerli bir şifre verebilmelisiniz ve bu da mutlu olacaktır. :-)


Bu daha iyi, teşekkürler! psql çalışır. Ancak pgadmin3 ile ilgili hala problemler var - bana sistem kök kullanıcısı için bir şifre soruluyor. (benim için garip) pg_hba.conf aynen dediğin gibi.
I159

'\ Q' kullanarak konsoldan çıkmayı ekledim. Bunu bulmak için bir süre aldı :)
hakunin

2
identİlk adımların çalışması için pg_hba.conf dosyasının postgres kullanıcısına ayarlanmış olması gerektiğini unutmayın . Daha önce md5 veya başka bir şeye ayarladıysanız, otomatik giriş yapamazsınız.
Cerin

80
Çok hoş biri. Diğer yeni kullanıcılara ALTER USER hattının sonunda SEMICOLON'U UNUTMAYIN.
itsols

3
@itsols Dediniz ki: "Çok hoş biri. Diğer yeni kullanıcılara, ALTER USER hattının sonunda SEMİKOLONU UNUTMAYIN" ... Dört saatlik bir çile son verdiniz! Şu anda kendimi aptal ve minnettar hissediyorum. :-D
frozenjim

148

Personelin yanıtı doğrudur, ancak daha fazla otomatikleştirmek istiyorsanız şunları yapabilirsiniz:

$ sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'postgres';"

Bitti! Kullanıcı = postgres ve şifre = postgres'i kaydettiniz.

Kullanıcı postgres ubuntu için bir parolanız yoksa:

$ sudo passwd postgres


Parolanız '!' Gibi ilginç karakterler içeriyorsa dikkatli olun
Brian Peterson

45

Bu sinir bozucuydu, yukarıdaki cevapların çoğu doğrudur, ancak veritabanı hizmetini yeniden başlatmanız gerektiğini söylemezler. bozucuydu pg_hba.conf dosyasındaki değişiklikler etkili olmadan önce gerektiğini söylemezler.

yani yukarıda belirtilen değişiklikleri yaparsanız:

local all postgres ident

sonra kök olarak yeniden başlatın (centos üzerinde servis servisi postgresql-9.2 restart gibi bir şey) şimdi kullanıcı postgres olarak db erişebilmelisiniz

$psql
psql (9.2.4)
Type "help" for help.

postgres=# 

Umarım bu yeni postgres kullanıcıları için bilgi ekler


26
sudo service postgresql restart
Ubuntu'da

4
RHEL7 kullanımı içinsudo systemctl restart postgresql.service
Spechal

1
Mac'te ne olacak?
AustinT


Teşekkürler Miguel. Parolayı el ile aldım ve postgres sunucusunu yeniden başlatana kadar benim pgAdmin veritabanına bağlanmadı.
Ustin

20

Pg_hba.conf dosyasını düzenleyin, örn. sudo emacs /etc/postgresql/9.3/main/pg_hba.conf

Tüm kimlik doğrulama yöntemlerini olarak değiştirin trust. "Postgres" kullanıcısı için Unix Parolasını değiştirin. Sunucuyu yeniden başlatın. Giriş yapın psql -h localhost -U postgresve sadece ayarlanmış Unix şifresini kullanın. Çalışırsa pg_hba.conf dosyasını varsayılan değerlerine yeniden ayarlayabilirsiniz.


1
Tamamen takılırsanız, bu tek garantili yöntemdir. Güvenmek, db'yi yeniden başlatmak ve sonra root olarak tüm yöntemleri değiştirin: sudo su - postgrespostgres db için bir sonraki set / fix / unset parolası (ve gerekirse kabukta), daha sonra güvenli hale getirmek için geri yükleyin md5veya identyöntemleri yeniden başlatın ve değerler yeniden yapışır. Bu arada, Cent / RedHat 9.4'te dosya şu konumda bulunur:/var/lib/pgsql/9.4/data/pg_hba.conf
PapaK

17

İlk kez kullananlar ve şifrenin ne olduğu hakkında bilgi sahibi olmayanlar için aşağıdaki adımları takip edebilirler (ubuntu'da olduğunuzu varsayarak):

  1. Dosya açma pg_hba.conf içinde/etc/postgresql/9.x/main

     sudo vi pg_hba.conf 

    2. aşağıdaki satırı düzenleyin

     local   all             postgres                                peer

    için

     local   all             postgres                                trust
  2. Sunucuyu yeniden başlatın

      sudo service postgresql restart
  3. Son olarak şekilde gösterildiği gibi bir parola gerekmeden giriş yapabilirsinizSon olarak şekilde gösterildiği gibi bir parola gerekmeden giriş yapabilirsiniz

Daha fazla bilgi için buraya bakın


12

Postgres kabuğuna postgres kullanıcısı olarak giriş yapmaya çalışıyorsanız, aşağıdaki komutları kullanabilirsiniz.

postgres kullanıcısına geç

# su - postgres

psql oturumu aç

# psql

umarım yardımcı olur


3
su - postgresUbuntu 16.04 üzerinde Posgresql 9.5 şifre istiyor
Prashanth Chandra

3
su - postgresresmi fedora belgelerinin önerdiği komuttur , ancak bir şifre istemi de alıyorum. Bunu takip ettiği yuvarlak almak için postgres forumu email burada kabul cevap olarak aynı komutu kullanır: sudo -u postgres psql. Veritabanı sunucusunu başlatmayı ve başlatmayı unutmayın.
icc97

11

-W parametresini kullanmamaya ve parolayı boş bırakmaya çalışın. Bazen kullanıcı şifresiz olarak oluşturulur.

Bu işe yaramazsa şifreyi sıfırlayın. Bunu yapmanın birkaç yolu vardır, ancak bu birçok sistemde çalışır:

$ su root
$ su postgres
$ psql -h localhost
> ALTER USER postgres with password 'YourNewPassword';

7

Genel bir kural olarak: ASLA POSTGRES KULLANICISI İÇİN ŞİFRENİN BİR ŞİFRESİNİ AYARLAMAMALISINIZ .

PgAdmin'den bir süper kullanıcı erişimine ihtiyacınız varsa, başka bir süper kullanıcı yapın. Bu şekilde, söz konusu süper kullanıcının kimlik bilgilerinden ödün verilirse, gerçek veritabanı ana bilgisayarına her zaman ssh ekleyebilir ve kullanarak süper kullanıcıyı manuel olarak silebilirsiniz.

sudo -u postgres -c "DROP ROLE superuser;"

1
Bu kuralın nedeni nedir?
Gershom

2
Böylece tüm süper kullanıcılarınızı asla tehlikeye atamazsınız.
ardilgulez

1
Postgres için bir şifre belirlemek, tüm süper kullanıcıların tehlikeye atılmasına nasıl yol açabilir?
Gershom

4
şifre ayarlamak, tüm süper kullanıcıların güvenliğinin ihlal edilmesine yol açmaz, ancak şifre ayarlanmaması, tüm süper kullanıcıların güvenliğinin ihlal edilmesini garanti eder. nedeni: parolayı ayarlamadığınızda, kullanıcıyı ertelemek için herhangi bir parola girişimi reddedilirken, yine de kendiniz güvenle kullanabilirsiniz.
ardilgulez

7

Postgres kabuğunuza girdikten sonra bu komutu girin

postgres=# \password postgres

Bu komutu girdikten sonra parolanızı ayarlamanız istenir, parolayı ayarlamanız ve ardından denemeniz yeterlidir.


3

Postgresql yüklediğinizde kullanıcı postgres için parola ayarlanmamışsa, şu komutu kullanarak açıkça Unix'te ayarlamanız gerekir:

sudo passwd postgres

Sudo şifrenizi soracak ve daha sonra yeni postgres kullanıcı şifresi için sizi teşvik edecektir. Kaynak


0

Sadece şifrenizin süresinin dolup dolmadığını da kontrol etmeniz gerektiğini eklemek istedim.

Ayrıntılar için bkz. Postgres şifre kimlik doğrulaması başarısız oluyor .


1
Bağlantının gelecekte mevcut olmaması durumunda, lütfen bazı ayrıntılar ve bu bağlantının neler sunduğunun bir özetini ekleyin. Aksi takdirde, bunun düşük kaliteli / yalnızca bağlantı yanıtı olarak işaretlenmesi olasıdır.
Tanner


0

İşte giriş yapmaya çalıştığım bazı kombinasyonlar:

# login via user foo
psql -Ufoo -h localhost

sudo -u postgres psql postgres

# user foo login to postgres db
psql -Ufoo -h localhost -d postgres

0

benzer bir sorun yaşadım. Ubuntu, süper kullanıcı için herhangi bir şifre ile konsolda oturum açmama izin verdi. Ben psql line komutunda -h localhost ile bağlandığında hariç.

Ben de gözlemledi "localhost: 8080 / MyJSPSiteLogIn" - gösterdi: Fatal: kullanıcı "kullanıcı" ile yetkilendirme hatası.

pg_hba.conf iyiydi.

Aynı hizmette çalışan iki postgres sürümü olduğunu belirtmiştim.

Çözüldü - inutil sürümünü kaldırma.


0

Benzer bir sorunla karşılaşmıştım. Herhangi bir veritabanına erişirken PGAdmin'de "postgres" kullanıcısı için parola doğrulaması başarısız oldu "


Çözüm:

  1. Postgres sunucusunu kapat
  2. Pgadmin'i yeniden çalıştırın
  3. pgadmin şifre isteyecektir.
  4. Lütfen söz konusu kullanıcının geçerli şifresini girin

Sorununuzu çözeceğini umuyoruz

resim açıklamasını buraya girin


-1

Umarım bu size kısa sürede yardımcı olur. Feryat komutunu kullanarak postgres sql şifresini değiştirebilirsiniz.

komuta

sudo -u postgres psql

Ve sonra şifreyi güncelleyebilirsiniz

komuta

Kullanıcı postgres şifresini 'YOUR_NEW_PASSWORD' değiştirin;


1
Cevabınız daha önce eklenmiş olan bilgileri içeriyor: stackoverflow.com/a/7696398/8283469
L. Guthardt
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.