Unutulmuş PostgreSQL Windows şifresi


31

Bu sabah, Windows 7 Professional masaüstümdeki PostgreSQL veritabanına bağlanmaya çalışıyorum.

Varsayılan değer 'postgres' şeklindedir, ancak ne kadar özgün olarak kurduğumda hangi şifreyi kullandığımı unuttum.

Googledim ve şifrenizi sıfırlamakla ilgili bir yayın buldum . Adımları takip ettim, ancak sonuçta postada belirtilenden biraz farklı. Kullandım-

net user postgres postgres

Veritabanımın şifresini sıfırlamak ancak başarılı bir mesaj vermek yerine alıyorum:

"Sistem hatası 5 oluştu. Erişim reddedildi."

Sistem hatası. Bu hatayı nasıl önleyebilirim ve şifreyi nasıl sıfırlarım?

Yanıtlar:


33

(Not: Bunun çoğu, PostgreSQL 9.2 veya daha üstünü kullanan ve EDB yükleyicilerinden kullanan ve artık diğer hesaplarını yapılandırabildiğiniz halde, kullanımıyla büyük ölçüde basitleştirilmiş bir varsayılan kurulum olan okuyucularla ilgili değildir NETWORK SERVICE) .


net user postgres postgres Veritabanımın şifresini sıfırlamak için kullandım ancak başarılı bir mesaj yerine alıyorum"System error 5 has occurred. Access is denied."

Servis hesabı şifresini sıfırladınız (veya sıfırlamayı denediniz). PostgreSQL güvenlik nedeniyle yönetici olarak çalışmayacak ve yükleyici genellikle PostgreSQL 9.1 ve üstü bir "postgres" kullanıcı hesabı ile kurar 1 . Windows'ta, kullanıcının şifresini kayıt defterine kaydetmeden bir kullanıcı olarak bir hizmeti başlatamazsınız, bu yüzden yükleyicinin yaptığı şey budur.

Windows kullanıcı hesabının şifresini değiştirirseniz, postgresPostgreSQL hizmeti artık başlayamaz. Bu yüzden bunu yapma, güncellenmiş şifreyi saklamak için servis yapılandırmasını düzeltmen gerekecek.

Neyse ki başka bir hatanın bunu yapmasını engellediğini düşünüyorum. Muhtemelen ayrıcalıklı olmayan bir Windows kullanıcı hesabında veya UAC'li bir makinede "Yönetici Olarak Çalıştır" kullanmadan komut isteminizi çalıştırıyor gibi görünüyorsunuz, bu nedenle postgreskullanıcının şifresini değiştirmek için gereken erişim izinleriyle çalışmıyor .

Şifreyi değiştirmeye çalışmadan önce, gerçekten yapmak istediğiniz şeyin olduğundan emin olun. Burada çözmeye çalıştığınız sorun nedir? Bir veritabanı güncellemesi veya postgresWindows kullanıcısı için parola isteyen başka bir şey yüklemeye mi çalışıyorsunuz ?

Büyük olasılıkla sadece veritabanına giriş yapmaya çalışıyorsunuz. Bunun için, veritabanında saklı olan (ne yazık ki tamamen alakasız) şifreyi kullanırsınız. Kaybettiğinizde / unuttuğunuzda, sıfırlamanız gerekir:

  • Bulun pg_hba.conf, genellikle içindeC:\Program Files\PostgreSQL\9.1\data\pg_hba.conf
  • Gerekirse, üzerinde değişiklik yapabilmek için izinleri ayarlayın; Kullanıcı hesabınız, bir yönetici geçersiz kılma kullanarak kendinize bu hakkı vermek için özellikler iletişim kutusundaki güvenlik sekmesini kullanana kadar yapamayabilir. Alternatif olarak, başlat menünüzde notepad / notepad ++ 'ı bulun, sağ tıklayın, "Yönetici olarak çalıştır" ı seçin, ardından açmak için Dosya-> Aç' ı kullanın pg_hba.conf.
  • "127.0.0.1/32" ana bilgisayarındaki "postgres" kullanıcısı için "ana bilgisayar" satırını "güven" olarak ayarlamak için düzenleyin. Orada değilse satırı ekleyebilirsiniz; sadece ekle:

    host all postgres 127.0.0.1/32 trust
    host all postgres ::1/128      trust # if IPv6 is in use

    diğer satırlardan önce . (Yorumlar ile başlayan satırları görmezden gelebilirsiniz #).

  • PostgreSQL servisini Servisler kontrol panelinden tekrar başlatın (start-> run-> services.msc)

  • psql veya PgAdmin-III veya ne istersen kullanarak bağlan
  • ALTER USER postgres PASSWORD 'postgres'
  • eklediğiniz satırı kaldırın pg_hba.confveya geri değiştirin
  • PostgreSQL'i tekrar başlatın.

Bkz: Windows'ta PostgreSQL için postgres şifresini nasıl sıfırlarım?


1. 9.2 şimdi NETWORKSERVICEşifre gerektirmeyen bir hesap kullanıyor , bu yüzden bu sorun çözülüyor .


8
Ayrıca bir ip6 girişine de ihtiyacınız olabilir: "tüm postgres'leri barındırın :: 1/128 trust"
Ted Elliott

Hala dev makinamda postreSQL 9.6 ile başım belada. Emin neden insanlar düşünmek öyle değil yardım> 9.2
tourdownunder

@darwindave Yüklemenize bağlı. NETWORKSERVICEKullanıcı hesabını kullanmak için yüklediyseniz , hizmet hesabı şifresi yok. Gibi bir özel hizmet hesabı postgresveya etki alanı hesabı kullanmak için yüklediyseniz , o zaman yardımcı olabilir.
Craig Ringer,

Bu cevabı, Windows için her iki yöntemi de gösteren 9.2+ ile güncel hale getirebilir misiniz?
Evan Carroll

1
@EvanCarroll Kullanıyorsanız NETWORK SERVICEsıfırlamak için şifre yok. 9.2+ üzerine farklı bir hesap kullanarak kurduysanız, aynı bilgiler geçerlidir. Ve postgres süper kullanıcı veritabanı hesap şifresini sıfırlama işleminde herhangi bir değişiklik olmaz . Yani ihtiyaç duyulan hiçbir değişiklik yok.
Craig Ringer

3

"Postgres" adı verilen sistem (Windows) kullanıcısı ile aynı adı taşıyan veritabanı kullanıcısı arasında ayrım yapmanız gerekir.

Pg_hba.conf dosyanızı bulun - bu PostgreSQL sunucusuna erişimi kontrol eder. Yönetici haklarına sahip bir kullanıcı olarak düzenlemeniz gerekecektir. Kullanıcının "postgres" ifadesinden bahseden satırları arayın ve geçici olarak modu "güven" olarak ayarlayın. Postgresql'i yeniden başlattığınızda parola olmadan bağlanabilmeniz gerekir. Şifreyi sıfırlayın, ardından dosyayı orijinal ayarlarına geri yükleyin ve PostgreSQL'i yeniden başlatın.

Kılavuz, doğrulama yöntemleri ve pg_hba.conf dosyası hakkında ayrıntılı bilgi içermektedir .


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.