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.
postgresql
postgresql-9.1
forgot-password
keriuhan
sumber
sumber
Jawaban:
cari file
pg_hba.conf
- mungkin lokasinya, misalnya di/etc/postgresql-9.1/pg_hba.conf
.cd /etc/postgresql-9.1/
Kembali ke atas
cp pg_hba.conf pg_hba.conf-backup
tempatkan baris berikut (baik sebagai baris tanpa komentar pertama, atau sebagai satu-satunya):
restart server PostgreSQL Anda (mis., di Linux :)
sudo /etc/init.d/postgresql restart
Jika layanan (daemon) tidak mulai melaporkan dalam file log:
kamu harus berubah
local all all trust
untuk
host all all 127.0.0.1/32 trust
Anda sekarang dapat terhubung sebagai pengguna mana pun. Hubungkan sebagai superuser
postgres
(perhatikan, nama superuser mungkin berbeda dalam instalasi Anda. Dalam beberapa sistempgsql
, 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)
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';
Kembalikan yang lama
pg_hba.conf
karena sangat berbahaya untuk disimpancp pg_hba.conf-backup pg_hba.conf
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
sumber
psql
? Saya masihSaat menghubungkan ke postgres dari baris perintah, jangan lupa tambahkan
-h localhost
sebagai 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.
Kegagalan:
Bekerja dengan
-h localhost
:sumber
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 mengubahMETHOD
darimd5
menjaditrust
:Kemudian, dengan menggunakan pgAdmin III, saya masuk tanpa menggunakan kata sandi dan mengubah
postgres'
kata sandi pengguna dengan masuk keFile -> Change Password
sumber
trust
Anda dapat mengikuti ini dan mengubah kata sandi dalam cmdSekedar catatan, di Linux Anda cukup menjalankannya
sudo su - postgres
untuk menjadi pengguna postgres dan dari sana ubah apa yang diperlukan menggunakan psql.sumber
Edit file
/etc/postgresql/<version>/main/pg_hba.conf
dan temukan baris berikut:Edit baris dan ubah
md5
di akhir untuktrust
menyimpan fileMuat ulang layanan postgresql
Ini akan memuat file konfigurasi. Sekarang Anda dapat memodifikasi
postgres
pengguna dengan masuk kepsql
shellPerbarui
postgres
kata sandi penggunaEdit file
/etc/postgresql/<version>/main/pg_hba.conf
dan ubahtrust
kembali kemd5
dan simpan fileMuat ulang layanan postgresql
Pastikan perubahan kata sandi berfungsi
sumber
Saya baru saja mengalami masalah ini pada Windows 10 dan masalah dalam kasus saya adalah bahwa saya baru saja berjalan
psql
dan 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 postgres
bukan hanyapsql
, dan kemudian kata sandi yang saya masukkan saat instalasi bekerja.sumber
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,
Ubah metode dari md5 menjadi trust,
Sekarang buka SQL Shell (PSQL) Anda dan biarkan semuanya kosong,
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.
sumber
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.
sumber
Apa yang saya lakukan untuk menyelesaikan masalah yang sama adalah:
Buka file pg_hba.conf dengan editor gedit dari terminal:
Ia akan meminta kata sandi. Masukkan kata sandi login admin Anda. Ini akan membuka gedit dengan file. Rekatkan baris berikut:
dibawah -
Simpan dan tutup. Tutup terminal dan buka lagi dan jalankan perintah ini:
Anda sekarang akan memasuki konsol psql. Sekarang ubah kata sandi dengan memasukkan ini:
Jika dikatakan pengguna tidak ada maka alih-alih
ALTER
digunakanCREATE
.Terakhir, hapus baris tertentu yang Anda tempel di pg_hba dan simpan.
sumber
Jika Anda berada di windows, Anda bisa menjalankannya
dan login di postgres dengan postgres / postgres sebagai pengguna / kata sandi
sumber
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.
sumber
Jika Anda menjalankan postgresql di mac os, coba ini :
Edit file pg_hba.conf
sudo vi /Library/PostgreSQL/9.2/data/pg_hba.conf
Ubah metode "md5" untuk semua pengguna untuk "percaya" di dekat bagian bawah file
Temukan nama layanan
ls / Library / LaunchDaemons
Cari postgresql
Hentikan layanan postgresql
sudo launchctl berhenti com.edb.launchd.postgresql-9.2
Mulai layanan postgresql
sudo launchctl mulai com.edb.launchd.postgresql-9.2
Mulai sesi psql sebagai postgres
psql -U postgres
(tidak boleh meminta kata sandi karena pengaturan 'kepercayaan')
Setel ulang kata sandi dalam sesi psql dengan mengetik
ALTER USER postgres dengan kata sandi 'secure-new-password';
memasukkan
Edit file pg_hba.conf
Alihkan kembali ke 'md5'
Mulai kembali layanan
sumber
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.
sumber