Postgres kurulumu sırasında girmiş olduğum şifreyi unuttum


206

Postgres'in varsayılan kullanıcısına şifreyi unuttum veya yanlış yazdım. Çalıştırmak mümkün görünmüyor ve aşağıdaki hatayı alıyorum:

psql: FATAL:  password authentication failed for user "hisham"
hisham-agil: hisham$ psql 

Şifreyi sıfırlamak için yine de var mı veya süper kullanıcı ayrıcalıklarına sahip yeni bir kullanıcı nasıl oluştururum?

Postgres'te yeniyim ve ilk kez yükledim. Rails ile kullanmaya çalışıyorum ve Mac OS X Lion kullanıyorum.


1
Henüz cevaplar hakkında yorum yapamam, bu yüzden bu şekilde yapmak zorundayım. SaiyanGirl'in söylediklerini yaptım, ancak yine de giriş yapmak için 'postgres' olan bir şifre girmem gerekiyordu, daha sonra şifreyi sıfırlayabilirim
Pascale

Yanıtlar:


360
  1. dosyayı bulun pg_hba.conf- örneğin içinde bulunabilir /etc/postgresql-9.1/pg_hba.conf.

    cd /etc/postgresql-9.1/

  2. Yedekle

    cp pg_hba.conf pg_hba.conf-backup

  3. aşağıdaki satırı yerleştirin (ilk önerilmeyen satır olarak veya tek satır olarak):

Aşağıdaki tüm oluşumlar için (yerel ve ana bilgisayar), aşağıdaki gibi değiştirilmesi gerekiyorsa, çoğaltma bölümünden muaf olun, MD5 veya Eş yetkilendirme olmamalıdır.

local  all   all   trust
  1. PostgreSQL sunucunuzu yeniden başlatın (örn. Linux'ta :)

    sudo /etc/init.d/postgresql restart

    Hizmet (arka plan programı) günlük dosyasında rapor vermeye başlamazsa:

    yerel bağlantılar bu derleme tarafından desteklenmiyor

    değişmelisin

    local all all trust

    için

    host all all 127.0.0.1/32 trust

  2. artık herhangi bir kullanıcı olarak bağlanabilirsiniz. Süper kullanıcı olarak bağlayın postgres(not, süper kullanıcı adı kurulumunuzda farklı olabilir. Örneğin, bazı sistemlerde denir pgsql. )

    psql -U postgres

    veya

    psql -h 127.0.0.1 -U postgres

    (ilk komutla her zaman yerel ana bilgisayara bağlanmayacağınızı unutmayın)

  3. (İle my_user_name yerine 'parolasını sıfırlama Postgres'e sıfırlamayı beri postgres kullanıcı)

    ALTER USER my_user_name with password 'my_secure_password';

  4. Etrafında saklamak çok tehlikelipg_hba.conf olduğu için eskiyi geri yükle

    cp pg_hba.conf-backup pg_hba.conf

  5. kasayla çalışmak için sunucuyu yeniden başlatın pg_hba.conf

    sudo /etc/init.d/postgresql restart

Bu pg_hba dosyası hakkında daha fazla okuma : http://www.postgresql.org/docs/9.1/static/auth-pg-hba-conf.html


9
Sonra başlasın psqlmı? Hala bir şifre
soruluyor

4
Bu cevap benim için işe yaramadı, 3. adımdan sonra hizmet başlamaz, bilmiyorum, belki OS (W8), sadece olmayacak.
Scaramouche

3
Windows için kimse var mı?
Mahesha999

2
Pg_hba.conf içindeki girişlerin sırasını unutmayın. Dosyanın sonuna "tüm yerel güven" eklerseniz, önceki kayıtlar önce eşleştirileceğinden beklediğiniz gibi çalışmaz. Öyleyse, beklediğiniz şeye sahip olmak için dosyanın en üstüne koyun.
Mart'ta Tagar

6
Bu hatayla pencerelerde iseniz, @SaiyanGirl'in cevabına ilerlemeye devam edin. Mevcut girişlerin YÖNTEM sütunlarını 'güven' olarak değiştirin, sonra bitirdiğinizde geri değiştirin
sean.hudson

99

Komut satırından postgres'e bağlanırken, -h localhostkomut satırı parametresi olarak eklemeyi unutmayın . Değilse, postgres PEER kimlik doğrulama modunu kullanarak bağlanmaya çalışır.

Aşağıda parolanın sıfırlanması, PEER kimlik doğrulaması ile başarısız oturum açma ve TCP bağlantısı kullanılarak başarılı oturum açma gösterilmektedir.

# sudo -u postgres psql
could not change directory to "/root"
psql (9.1.11)
Type "help" for help.

postgres=# \password
Enter new password:
Enter it again:
postgres=# \q

başarısız:

# psql -U postgres -W
Password for user postgres:
psql: FATAL:  Peer authentication failed for user "postgres"

İle çalışmak -h localhost:

# psql -U postgres -W  -h localhost
Password for user postgres:
psql (9.1.11)
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.

postgres=#

7
"-H" seçeneğiyle ilgili bahşiş için teşekkürler, bana yardımcı oldu.
Bunkerbewohner

Windows cmd.exe üzerinde gereksiz
Fabien Haddadi

1
Mac için en iyi cevap
Muhammad Umar

72

pg_hba.conf( C:\Program Files\PostgreSQL\9.3\dataBu yanıtlar verildi beri) dosyası değişti. Windows, benim için çalıştı Ne, dosyayı açın ve değiştirmektir METHODgelen md5için trust:

# 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

Sonra pgAdmin III kullanarak, şifre kullanmadan giriş yaptım ve kullanıcı postgres'şifresini değiştirerekFile -> Change Password


PgAdmin hala geçerli parolayı istediğinden bu işe yaramaz ... 'Güven'e sıfırladım ve PgAdmin'i yeniden başlattım. CURRENT şifresini yazmadan hala sıfırlayamazsınız ...
gen b.

1
Eğer yöntemini değiştirdiğinizde için trustizleyebileceğiniz bu cmd ve alter şifreyi
Gilad Green

12

Linux'ta sadece bir not sudo su - postgresPostgres kullanıcısı olmak için koşabilir ve oradan psql kullanarak gerekli olanı değiştirebilirsiniz.


3
psql çalıştırdıktan sonra hala şifreye ihtiyacınız var
Snow

8
  1. Dosyayı düzenleyin /etc/postgresql/<version>/main/pg_hba.confve aşağıdaki satırı bulun:

    local   all             postgres                                md5
  2. Satırı md5düzenleyin trustve sonunda dosyayı değiştirin ve kaydedin

  3. Postgresql hizmetini yeniden yükleyin

    $ sudo service postgresql reload
  4. Bu, yapılandırma dosyalarını yükleyecektir. Artık kabukta postgresoturum açarak kullanıcıyı değiştirebilirsinizpsql

    $ psql -U postgres
  5. postgresKullanıcının şifresini güncelleyin

    alter user postgres with password 'secure-passwd-here';
  6. Dosyayı düzenleyin /etc/postgresql/<version>/main/pg_hba.confve dosyaya trustgeri dönün md5ve kaydedin

  7. Postgresql hizmetini yeniden yükleyin

    $ sudo service postgresql reload
  8. Şifre değişikliğinin çalıştığını doğrulayın

    $ psql -U postgres -W

Bir Windows çözümü vermek çok mu zor? Herkes sudo ile Linux kullanmaz. Windows'ta nasıl yaparım?
gen b.

7

Sadece Windows 10'da bu sorunu yaşıyordum ve benim durumumdaki sorun sadece çalışıyordum psqlve Windows kullanıcı adımla ("Nathan") giriş yapmaya çalışmaktı, ancak bu adla PostgreSQL kullanıcısı yoktu, ve bunu bana söylemiyordu.

Bu yüzden çözüm psql -U postgressadece yerine çalıştırmaktı psqlve kurulumda girdiğim şifre işe yaradı.


5

En son postgres sürümü (> 10) için Windows Kullanıcısı yanıtı eklenmesi,

Postgres kurulum konumunuza gidin ve arayın pg_hba.conf,..\postgres\data\pg_hba.conf

Bu dosyayı not defteri ile açın, bu satırı 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
#..

Metodu md5'ten güvene 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
# ...

Şimdi SQL Shell'inize (PSQL) gidin ve her şeyi boş bırakın,

Server [localhost]:
Database [postgres]:
Port [8000]:
Username [postgres]: 

Bu sefer şifre istemeyecek ve giriş yapacaksınız,

Şimdi bu satırı çalıştırın, ALTER USER yourusername WITH SUPERUSER

Şimdi kabuğu \ q ile bırakabilirsiniz

Tekrar pg_hba.conf dosyasına gidin ve METHOD'u güven yerine md5 olarak değiştirin ve kaydedin.

Şimdi yeni kullanıcı ve şifrenizle giriş yapın ve özelliklerini kontrol edebilirsiniz.


1

Windows yüklemesi için bir Windows kullanıcısı oluşturulur. Ve "psql" bağlantı noktasına bağlantı için bu kullanıcıyı kullanır. PostgreSQL kullanıcı parolasını değiştirirseniz, Windows parolasını değiştirmez. Aşağıdaki komut satırı juste yalnızca komut satırına erişiminiz varsa çalışır.

Bunun yerine Windows GUI uygulamasını "c: \ Windows \ system32 \ lusrmgr.exe" kullanabilirsiniz. Bu uygulama Windows tarafından oluşturulan kullanıcıları yönetir. Böylece şifreyi değiştirebilirsiniz.


1

Aynı sorunu çözmek için ne yaptım:

Terminalden gedit editörü ile pg_hba.conf dosyasını açın:

sudo gedit /etc/postgresql/9.5/main/pg_hba.conf

Şifre isteyecektir. Yönetici giriş şifrenizi girin. Bu dosya ile gedit açılacaktır. Aşağıdaki satırı yapıştırın:

host  all   all  127.0.0.1/32  trust

hemen aşağıda -

# Database administrative login by Unix domain socket

Kaydedip kapatın. Terminali kapatın ve tekrar açın ve şu komutu çalıştırın:

psql -U postgres

Şimdi psql konsoluna gireceksiniz. Şimdi şunu girerek şifreyi değiştirin:

ALTER USER [your prefered user name] with password '[desired password]';

Kullanıcının var olmadığını söylüyorsa ALTERkullanmak yerine CREATE.

Son olarak, pg_hba'ya yapıştırdığınız belirli bir satırı kaldırın ve kaydedin.


0

Eğer penceredeyseniz,

net user postgres postgres

ve postgres / postgres içeren postgres kullanıcı / şifre olarak giriş yapın


0

Kullanıcının giriş dizinindeki .pgpass dosyası veya PGPASSFILE tarafından başvurulan dosya, bağlantı bir parola gerektiriyorsa (ve başka bir parola belirtilmemişse) kullanılacak parolalar içerebilir. Microsoft Windows'da dosya% APPDATA% \ postgresql \ pgpass.conf olarak adlandırılır (burada% APPDATA%, kullanıcı profilindeki Uygulama Verileri alt dizinini belirtir).

Bu dosya aşağıdaki biçimde satırlar içermelidir:

hostname: port: veritabanı: kullanıcı adı: şifre

(Yukarıdaki satırı kopyalayıp # ile başlayarak dosyaya hatırlatıcı bir yorum ekleyebilirsiniz.) İlk dört alanın her biri değişmez bir değer veya herhangi bir şeyle eşleşen * olabilir. İlk satırdaki geçerli bağlantı parametreleriyle eşleşen parola alanı kullanılacaktır. (Bu nedenle, joker karakterler kullanırken önce daha spesifik girişler koyun.) Bir girişin aşağıdakileri içermesi gerekiyorsa: veya \, bu karakterden kaçın. Bir yerel ana bilgisayar adı, yerel makineden gelen TCP (ana bilgisayar adı localhost) ve Unix etki alanı soketi (pghost boş veya varsayılan soket dizini) bağlantılarıyla eşleşir. Bekleme sunucusunda, çoğaltma veritabanı adı, ana sunucuya yapılan akış çoğaltma bağlantılarıyla eşleşir. Veritabanı alanı sınırlı yararlıdır, çünkü kullanıcılar aynı kümedeki tüm veritabanları için aynı parolaya sahiptir.

Unix sistemlerinde, .pgpass üzerindeki izinler dünyaya veya gruba erişime izin vermemelidir; bunu chmod 0600 ~ / .pgpass komutuyla başarın. İzinler bundan daha az katı ise, dosya yoksayılır. Microsoft Windows'da, dosyanın güvenli bir dizinde depolandığı varsayılır, bu nedenle özel izin denetimi yapılmaz.


Bu, yolun C: \ Users \ <kullanıcı> \ AppData \ Roaming \ postgresql \ pgpass.conf dosyasına genişletildiği yerde benim için çalıştı. Ayrıca PostgreSQL sunucusunun kapatılması ve açılması yardımcı gibi görünüyordu.
geodata

0

Eğer mac os üzerinde postgresql çalıştırıyorsanız, denemek bunlar :

  1. Pg_hba.conf dosyasını düzenleyin

  2. sudo vi /Library/PostgreSQL/9.2/data/pg_hba.conf

  3. Tüm kullanıcıların dosyanın altına "güvenmesi" için "md5" yöntemini değiştirin

  4. Hizmetin adını bulma

  5. ls / Library / LaunchDaemons

  6. Postgresql arayın

  7. Postgresql hizmetini durdurun

  8. sudo launchctl stop com.edb.launchd.postgresql-9.2

  9. Postgresql hizmetini başlatma

  10. sudo launchctl start com.edb.launchd.postgresql-9.2

  11. Psql oturumunu postgres olarak başlat

  12. psql -U postgres

  13. ('güven' ayarı nedeniyle şifre istememelidir)

  14. Psql oturumunda parolayı yazarak sıfırlayın

  15. ALTER USER şifresini 'güvenli-yeni-şifre' ile kaydeder;

  16. \ q
  17. giriş

  18. Pg_hba.conf dosyasını düzenleyin

  19. Tekrar 'md5' olarak değiştirin

  20. Hizmetleri yeniden başlatın


-1

Benim için pencerelerde işe yarayan buydu:

Pg_hba.conf dosyasının yerini C: \ Program Files \ PostgreSQL \ 9.3 \ data konumunda düzenleyin.

# IPv4 local connections: host all all 127.0.0.1/32 trust

Yöntemi güven yerine md5 olarak değiştirin ve Windows'ta postgres hizmetini yeniden başlatın.

Bundan sonra pggmin kullanarak şifresiz postgres kullanıcısını kullanarak giriş yapabilirsiniz. Parolayı Dosya-> Parolayı değiştir'i kullanarak değiştirebilirsiniz.

Postgres kullanıcısının süper kullanıcı ayrıcalıkları yoksa, şifreyi değiştiremezsiniz. Bu durumda, süper kullanıcı erişimine sahip başka bir kullanıcıyla (pgsql) oturum açın ve kullanıcıları sağ tıklayıp özellikler-> Rol ayrıcalıkları'nı seçerek diğer kullanıcılara ayrıcalıklar sağlayın.

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.