Lupa kata sandi Windows PostgreSQL

31

Pagi ini saya sudah mencoba untuk menghubungkan database PostgreSQL di desktop Windows 7 Professional saya.

Nilai defaultnya adalah 'postgres', tapi tentu saja saya lupa kata sandi apa yang saya gunakan saat saya menginstalnya.

Saya telah mencari di Google dan menemukan pos yang terkait dengan pengaturan ulang kata sandi Anda. Saya mengikuti langkah-langkahnya, tetapi hasil akhirnya sedikit berbeda dari yang disebutkan di posting. Saya menggunakan—

net user postgres postgres

untuk mereset kata sandi untuk basis data saya tetapi alih-alih pesan sukses yang saya peroleh:

"Kesalahan sistem 5 telah terjadi. Akses ditolak."

sistem bermasalah. Bagaimana saya menghindari kesalahan ini dan mengatur ulang kata sandi?

AKIWEB
sumber

Jawaban:

33

(Catatan: Tidak banyak dari ini relevan bagi pembaca yang menggunakan PostgreSQL 9.2 atau lebih tinggi dari installer EDB, yang sekarang memiliki instalasi default yang sangat disederhanakan menggunakan NETWORK SERVICE, meskipun Anda masih dapat mengonfigurasi akun lain) .


Saya sudah terbiasa net user postgres postgres mengatur ulang kata sandi untuk basis data saya tetapi bukannya pesan sukses yang saya peroleh"System error 5 has occurred. Access is denied."

Anda telah mengatur ulang (atau mencoba mengatur ulang) kata sandi akun layanan. PostgreSQL tidak akan berjalan sebagai Administrator karena alasan keamanan dan penginstal umumnya mengaturnya dengan akun pengguna "postgres" di PostgreSQL 9.1 dan yang lebih lama 1 . Pada Windows Anda tidak dapat memulai layanan sebagai pengguna tanpa menyimpan kata sandi pengguna dalam registri, jadi itulah yang dilakukan oleh penginstal.

Jika Anda mengubah kata sandi untuk akun pengguna Windows postgres, layanan PostgreSQL tidak dapat lagi dimulai. Jadi jangan lakukan itu, Anda harus memperbaiki konfigurasi layanan untuk menyimpan kata sandi yang diperbarui.

Untungnya saya pikir kesalahan lain mencegah Anda melakukan itu. Sepertinya Anda mungkin menjalankan command prompt Anda tanpa menggunakan "Run as Administrator" pada akun pengguna Windows yang tidak berhak atau mesin dengan UAC, jadi itu tidak berjalan dengan izin akses yang diperlukan untuk mengubah kata sandi untuk postgrespengguna.

Sebelum Anda mencoba mengubah kata sandi itu, pastikan itu benar-benar yang ingin Anda lakukan. Apa masalah yang Anda coba selesaikan di sini? Apakah Anda mencoba menginstal pembaruan basis data atau sesuatu yang meminta kata sandi untuk postgrespengguna Windows?

Kemungkinan besar Anda hanya mencoba masuk ke database. Untuk itu, Anda menggunakan kata sandi (sayangnya sama sekali tidak terkait) yang disimpan dalam database sendiri. Karena Anda kehilangan / melupakannya, Anda harus mengatur ulang:

  • Temukan milik Anda pg_hba.conf, biasanya diC:\Program Files\PostgreSQL\9.1\data\pg_hba.conf
  • Jika perlu, atur izin di atasnya sehingga Anda dapat memodifikasinya; akun pengguna Anda mungkin tidak dapat melakukannya sampai Anda menggunakan tab keamanan di dialog properti untuk memberikan hak kepada diri Anda dengan menggunakan penggantian admin. Sebagai alternatif, cari notepad / notepad ++ di menu mulai Anda, klik kanan, pilih "Run as administrator", lalu gunakan File-> Open untuk membuka pg_hba.confseperti itu.
  • Edit untuk menyetel baris "host" untuk "postgres" pada host "127.0.0.1/32" menjadi "trust". Anda dapat menambahkan baris jika tidak ada di sana; cukup masukkan:

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

    sebelum garis lain. (Anda dapat mengabaikan komentar, baris yang dimulai dengan #).

  • Mulai ulang layanan PostgreSQL dari panel kontrol Layanan (start-> run-> services.msc)

  • terhubung menggunakan psql atau PgAdmin-III atau apa pun yang Anda suka
  • ALTER USER postgres PASSWORD 'postgres'
  • hapus baris yang Anda tambahkan pg_hba.confatau ubah kembali
  • restart PostgreSQL lagi.

Lihat: Bagaimana cara mereset kata sandi postgres untuk PostgreSQL di Windows?


1. 9.2 sekarang menggunakan NETWORKSERVICEakun, yang tidak memerlukan kata sandi, sehingga masalah ini hilang .

Craig Ringer
sumber
8
Anda juga mungkin memerlukan entri ip6: "host semua postgres :: 1/128 trust"
Ted Elliott
Masih membuat saya keluar dari masalah dengan postreSQL 9.6 di mesin dev saya. Tidak yakin mengapa orang berpikir itu tidak membantu> 9.2
tourdownunder
@darwindave Tergantung pada instalasi Anda. Jika Anda menginstal untuk menggunakan NETWORKSERVICEakun pengguna, tidak ada kata sandi akun servce. Jika Anda menginstal untuk menggunakan akun layanan khusus seperti postgresatau akun domain, maka itu dapat membantu.
Craig Ringer
Bisakah Anda membawa jawaban ini mutakhir dengan 9.2+ juga menunjukkan kedua metode untuk Windows?
Evan Carroll
1
@EvanCarroll Jika Anda menggunakan NETWORK SERVICEtidak ada kata sandi untuk mengatur ulang. Jika Anda menginstal pada 9.2+ menggunakan akun yang berbeda, informasi yang sama berlaku. Dan tidak ada perubahan pada bagian pengaturan ulang kata sandi akun database pengguna super postgres . Jadi tidak ada perubahan yang dibutuhkan.
Craig Ringer
3

Anda perlu membedakan antara pengguna sistem (Windows) Anda yang disebut "postgres" dan pengguna basis data dengan nama yang sama.

Temukan file pg_hba.conf Anda - ini mengontrol akses ke server PostgreSQL. Anda harus mengeditnya sebagai pengguna dengan hak Administrator. Cari baris yang menyebutkan "postgres" pengguna dan set sementara mode ke "trust". Mulai ulang postgresql dan kemudian Anda dapat terhubung tanpa kata sandi. Setel ulang kata sandi, lalu kembalikan file ke pengaturan semula dan mulai ulang PostgreSQL.

Manual memiliki detail tentang metode otentikasi dan file pg_hba.conf .

Richard Huxton
sumber