Saya lupa kata sandi yang saya masukkan selama instalasi postgres

205

Saya lupa atau salah ketik (selama instalasi) kata sandi untuk pengguna default Postgres. Sepertinya saya tidak dapat menjalankannya dan saya mendapatkan kesalahan berikut:

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

Apakah ada cara mengatur ulang kata sandi atau bagaimana cara membuat pengguna baru dengan hak pengguna super?

Saya baru mengenal Postgres dan baru saja menginstalnya untuk pertama kali. Saya mencoba menggunakannya dengan Rails dan saya menjalankan Mac OS X Lion.

keriuhan
sumber
1
Saya belum bisa mengomentari jawaban, jadi harus melakukannya dengan cara ini. Saya melakukan apa yang dikatakan SaiyanGirl, namun saya masih perlu memasukkan kata sandi, yang merupakan 'postgres' untuk masuk, maka saya dapat mengatur ulang kata sandi
Pascale

Jawaban:

359
  1. cari file pg_hba.conf- mungkin lokasinya, misalnya di /etc/postgresql-9.1/pg_hba.conf.

    cd /etc/postgresql-9.1/

  2. Kembali ke atas

    cp pg_hba.conf pg_hba.conf-backup

  3. tempatkan baris berikut (baik sebagai baris tanpa komentar pertama, atau sebagai satu-satunya):

Untuk semua kejadian di bawah ini (lokal dan tuan rumah), bagian replikasi exepct jika Anda tidak memiliki itu harus diubah sebagai berikut, tidak ada MD5 atau Peer autehication harus hadir.

local  all   all   trust
  1. restart server PostgreSQL Anda (mis., di Linux :)

    sudo /etc/init.d/postgresql restart

    Jika layanan (daemon) tidak mulai melaporkan dalam file log:

    koneksi lokal tidak didukung oleh bangunan ini

    kamu harus berubah

    local all all trust

    untuk

    host all all 127.0.0.1/32 trust

  2. Anda sekarang dapat terhubung sebagai pengguna mana pun. Hubungkan sebagai superuser postgres(perhatikan, nama superuser mungkin berbeda dalam instalasi Anda. Dalam beberapa sistem pgsql, misalnya, disebut . )

    psql -U postgres

    atau

    psql -h 127.0.0.1 -U postgres

    (perhatikan bahwa dengan perintah pertama Anda tidak akan selalu terhubung dengan host lokal)

  3. Setel ulang kata sandi ('ganti my_user_name dengan postgres karena Anda mengatur ulang pengguna postgres )

    ALTER USER my_user_name with password 'my_secure_password';

  4. Kembalikan yang lama pg_hba.confkarena sangat berbahaya untuk disimpan

    cp pg_hba.conf-backup pg_hba.conf

  5. restart server, untuk menjalankannya dengan aman pg_hba.conf

    sudo /etc/init.d/postgresql restart

Bacaan Lebih Lanjut tentang file pg_hba itu: http://www.postgresql.org/docs/9.1/static/auth-pg-hba-conf.html

Arsen7
sumber
9
Dan kemudian mulai psql? Saya masih
dimintai
4
jawaban ini TIDAK bekerja untuk saya, setelah saya melakukan langkah 3, layanan tidak akan mulai, saya tidak tahu, mungkin itu OS (W8), itu hanya tidak akan.
Scaramouche
3
siapa pun untuk Windows?
Mahesha999
2
Ingat urutan entri di pg_hba.conf penting. Jika Anda menambahkan "kepercayaan semua lokal" ke akhir file, itu tidak akan berfungsi seperti yang Anda harapkan, karena catatan sebelumnya akan cocok terlebih dahulu. Jadi letakkan di bagian atas file untuk mendapatkan apa yang Anda harapkan.
Tagar
6
Jika Anda berada di windows dengan kesalahan ini, terus gulir ke jawaban @SaiyanGirl. Cukup modifikasi kolom METODE dari entri yang ada ke 'trust', lalu ubah kembali ketika Anda selesai
sean.hudson
99

Saat menghubungkan ke postgres dari baris perintah, jangan lupa tambahkan -h localhostsebagai parameter baris perintah. Jika tidak, postgres akan mencoba terhubung menggunakan mode otentikasi PEER.

Di bawah ini menunjukkan pengaturan ulang kata sandi, login gagal dengan otentikasi PEER dan login berhasil menggunakan koneksi TCP.

# 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

Kegagalan:

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

Bekerja dengan -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=#
SaeX
sumber
7
Terima kasih atas tip mengenai opsi "-h", membantu saya.
Bunkerbewohner
Tidak dibutuhkan pada Windows cmd.exe
Fabien Haddadi
1
Jawaban terbaik untuk mac
Muhammad Umar
72

File pg_hba.conf( C:\Program Files\PostgreSQL\9.3\data) telah berubah sejak jawaban ini diberikan. Apa yang berhasil bagi saya, di Windows, adalah membuka file dan mengubah METHODdari md5menjadi 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

Kemudian, dengan menggunakan pgAdmin III, saya masuk tanpa menggunakan kata sandi dan mengubah postgres'kata sandi pengguna dengan masuk keFile -> Change Password

SaiyanGirl
sumber
Ini tidak berfungsi karena PgAdmin masih meminta kata sandi saat ini ... Saya reset ke 'trust' dan memulai kembali PgAdmin. Masih tidak dapat mengatur ulang tanpa mengetikkan kata sandi SAAT INI ...
gen b.
1
Setelah Anda mengubah metode, trustAnda dapat mengikuti ini dan mengubah kata sandi dalam cmd
Gilad Green
12

Sekedar catatan, di Linux Anda cukup menjalankannya sudo su - postgresuntuk menjadi pengguna postgres dan dari sana ubah apa yang diperlukan menggunakan psql.

Daniel
sumber
3
Anda masih memerlukan kata sandi setelah menjalankan psql
Snow
8
  1. Edit file /etc/postgresql/<version>/main/pg_hba.confdan temukan baris berikut:

    local   all             postgres                                md5
  2. Edit baris dan ubah md5di akhir untuk trustmenyimpan file

  3. Muat ulang layanan postgresql

    $ sudo service postgresql reload
  4. Ini akan memuat file konfigurasi. Sekarang Anda dapat memodifikasi postgrespengguna dengan masuk ke psqlshell

    $ psql -U postgres
  5. Perbarui postgreskata sandi pengguna

    alter user postgres with password 'secure-passwd-here';
  6. Edit file /etc/postgresql/<version>/main/pg_hba.confdan ubah trustkembali ke md5dan simpan file

  7. Muat ulang layanan postgresql

    $ sudo service postgresql reload
  8. Pastikan perubahan kata sandi berfungsi

    $ psql -U postgres -W
Ray Hunter
sumber
Apakah begitu sulit untuk memberikan solusi Windows? Tidak semua orang menggunakan Linux dengan sudo. Bagaimana saya melakukannya di Windows ??
gen b.
7

Saya baru saja mengalami masalah ini pada Windows 10 dan masalah dalam kasus saya adalah bahwa saya baru saja berjalan psqldan itu adalah default untuk mencoba masuk dengan nama pengguna Windows saya ("Nathan"), tetapi tidak ada pengguna PostgreSQL dengan nama itu, dan itu tidak mengatakan itu padaku.

Jadi solusinya adalah menjalankan psql -U postgresbukan hanya psql, dan kemudian kata sandi yang saya masukkan saat instalasi bekerja.

Nathan Wailes
sumber
5

Menambahkan jawaban untuk Pengguna Windows untuk versi postgres terbaru (> 10),

Pergi ke lokasi instalasi postgres Anda, dan cari pg_hba.conf, Anda akan menemukannya di..\postgres\data\pg_hba.conf

Buka file itu dengan notepad, cari baris ini,

# 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
#..

Ubah metode dari md5 menjadi 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
# ...

Sekarang buka SQL Shell (PSQL) Anda dan biarkan semuanya kosong,

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

Ini tidak akan meminta kata sandi saat ini, dan Anda akan masuk,

Sekarang jalankan baris ini, ALTER USER yourusername WITH SUPERUSER

Sekarang Anda dapat meninggalkan shell dengan \ q

Sekali lagi buka file pg_hba.conf dan ubah METHOD dari trust menjadi md5 lagi, dan simpan.

Sekarang masuk dengan pengguna dan kata sandi baru Anda dan Anda dapat memeriksa \ du untuk atributnya.

Bidhan Majhi
sumber
1

Untuk instalasi Windows, pengguna Windows dibuat. Dan "psql" gunakan pengguna ini untuk koneksi ke port. Jika Anda mengubah kata sandi pengguna PostgreSQL, itu tidak akan mengubah kata sandi Windows. Baris perintah di bawah ini hanya berfungsi jika Anda memiliki akses ke baris perintah.

Sebagai gantinya, Anda dapat menggunakan aplikasi Windows GUI "c: \ Windows \ system32 \ lusrmgr.exe". Aplikasi ini mengelola pengguna yang dibuat oleh Windows. Jadi sekarang Anda dapat mengubah kata sandi.

cpunky
sumber
1

Apa yang saya lakukan untuk menyelesaikan masalah yang sama adalah:

Buka file pg_hba.conf dengan editor gedit dari terminal:

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

Ia akan meminta kata sandi. Masukkan kata sandi login admin Anda. Ini akan membuka gedit dengan file. Rekatkan baris berikut:

host  all   all  127.0.0.1/32  trust

dibawah -

# Database administrative login by Unix domain socket

Simpan dan tutup. Tutup terminal dan buka lagi dan jalankan perintah ini:

psql -U postgres

Anda sekarang akan memasuki konsol psql. Sekarang ubah kata sandi dengan memasukkan ini:

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

Jika dikatakan pengguna tidak ada maka alih-alih ALTERdigunakan CREATE.

Terakhir, hapus baris tertentu yang Anda tempel di pg_hba dan simpan.

Inconnu
sumber
0

Jika Anda berada di windows, Anda bisa menjalankannya

net user postgres postgres

dan login di postgres dengan postgres / postgres sebagai pengguna / kata sandi

ivernernes
sumber
0

File .pgpass di direktori home pengguna atau file yang dirujuk oleh PGPASSFILE dapat berisi kata sandi untuk digunakan jika koneksi memerlukan kata sandi (dan tidak ada kata sandi yang telah ditentukan sebaliknya). Pada Microsoft Windows file tersebut dinamai% APPDATA% \ postgresql \ pgpass.conf (di mana% APPDATA% merujuk ke subdirektori Data Aplikasi di profil pengguna).

File ini harus berisi baris dengan format berikut:

hostname: port: database: nama pengguna: kata sandi

(Anda dapat menambahkan komentar pengingat ke file dengan menyalin baris di atas dan mendahului dengan #.) Masing-masing dari empat bidang pertama bisa menjadi nilai literal, atau *, yang cocok dengan apa pun. Kolom kata sandi dari baris pertama yang cocok dengan parameter koneksi saat ini akan digunakan. (Oleh karena itu, letakkan entri yang lebih spesifik terlebih dahulu saat Anda menggunakan wildcard.) Jika sebuah entri perlu mengandung: atau \, lepas karakter ini dengan. Nama host localhost cocok dengan TCP (nama host localhost) dan soket domain Unix (pghost kosong atau direktori socket default) koneksi yang berasal dari mesin lokal. Di server siaga, nama database replikasi cocok dengan koneksi replikasi streaming yang dibuat ke server master. Bidang basis data memiliki kegunaan terbatas karena pengguna memiliki kata sandi yang sama untuk semua basis data di kelompok yang sama.

Pada sistem Unix, izin pada .pgpass harus melarang akses apa pun ke dunia atau grup; capai ini dengan perintah chmod 0600 ~ / .pgpass. Jika izinnya kurang ketat dari ini, file tersebut akan diabaikan. Di Microsoft Windows, diasumsikan bahwa file tersebut disimpan dalam direktori yang aman, sehingga tidak ada pemeriksaan izin khusus yang dilakukan.

rahulnikhare
sumber
Ini bekerja untuk saya, di mana jalur diperluas ke C: \ Users \ <user> \ AppData \ Roaming \ postgresql \ pgpass.conf. Juga mematikan dan pada server PostgreSQL sepertinya membantu.
geodata
0

Jika Anda menjalankan postgresql di mac os, coba ini :

  1. Edit file pg_hba.conf

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

  3. Ubah metode "md5" untuk semua pengguna untuk "percaya" di dekat bagian bawah file

  4. Temukan nama layanan

  5. ls / Library / LaunchDaemons

  6. Cari postgresql

  7. Hentikan layanan postgresql

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

  9. Mulai layanan postgresql

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

  11. Mulai sesi psql sebagai postgres

  12. psql -U postgres

  13. (tidak boleh meminta kata sandi karena pengaturan 'kepercayaan')

  14. Setel ulang kata sandi dalam sesi psql dengan mengetik

  15. ALTER USER postgres dengan kata sandi 'secure-new-password';

  16. \ q
  17. memasukkan

  18. Edit file pg_hba.conf

  19. Alihkan kembali ke 'md5'

  20. Mulai kembali layanan

David
sumber
-1

Inilah yang bekerja untuk saya di windows:

Edit lokasi file pg_hba.conf di C: \ Program Files \ PostgreSQL \ 9.3 \ data.

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

Ubah metode dari trust ke md5 dan restart layanan postgres di windows.

Setelah itu, Anda dapat masuk menggunakan pengguna postgres tanpa kata sandi dengan menggunakan pgadmin. Anda dapat mengubah kata sandi menggunakan File-> Ubah kata sandi.

Jika pengguna postgres tidak memiliki hak pengguna super, maka Anda tidak dapat mengubah kata sandi. Dalam hal ini, login dengan pengguna lain (pgsql) dengan akses pengguna super dan memberikan hak istimewa kepada pengguna lain dengan mengklik kanan pada pengguna dan memilih properti-> Hak istimewa peran.

Chetan
sumber