hapus persyaratan kata sandi untuk postgres pengguna


46

Saya mengerti bahwa, setelah instalasi, PostgreSQL tidak memiliki kata sandi untuk pengguna root db (postgres):

postgres=# select usename, passwd is null from pg_shadow;
 usename  | ?column? 
----------+----------
 postgres | t
(1 row)

... dan seseorang disarankan untuk mengaturnya dengan:

alter role postgres password '<<very-secret>>';

(dan kemudian perbarui pg_hba.conffile yang sesuai)

Pertanyaan saya adalah: apa SQL yang digunakan untuk kembali ke situasi sebelumnya ketika tidak ada kata sandi yang diperlukan untuk pengguna postgres.

Secara umum, bagaimana saya bisa menghapus persyaratan kata sandi untuk peran apa pun? Saya tidak bertanya bagaimana cara mengubah kata sandi tetapi bagaimana cara menghapus persyaratan kata sandi ( passwdkolom nol dalam tabel pg_shadow).

Jawaban:


55

Apakah kata sandi diperlukan atau tidak tidak ada hubungannya dengan pg_shadowdan apakah kata sandi benar-benar ditentukan untuk pengguna. Ya, saya tahu, itu aneh.

pg_hba.confmengontrol metode otentikasi. Jika Anda ingin meminta kata sandi, gunakan md5otentikasi. Jika Anda ingin mengizinkan masuk tanpa kata sandi kepada siapa pun, gunakan trust. Jika Anda ingin meminta nama pengguna yang sama dalam sistem operasi seperti pada PostgreSQL, gunakan peer(UNIX, hanya untuk koneksi lokal) atau sspi(Windows).

Jika ada set kata sandi, tetapi pg_hba.conftidak memberi tahu PostgreSQL untuk memintanya, kata sandi diabaikan.

Jika pg_hba.confmemberitahu PostgreSQL untuk meminta kata sandi tetapi tidak ada yang ditetapkan, maka semua upaya login akan gagal tidak peduli apa pun kata sandi yang diberikan.


12

Pengguna postgres secara default tidak memiliki kata sandi. Untuk menghapus kata sandi pengguna (dalam hal ini untuk pengguna / peran postgres):

alter role postgres password null;

Kita juga perlu mengatur otentikasi ke trustdalam pg_hba.conf-lihat detail [ https://dba.stackexchange.com/a/19657/52550]


3
sekarang saya tidak dapat mengakses psql
Roberth SolĂ­s

3
Ya, sekarang saya dimintai kata sandi dan tidak bisa masuk ...
Amalgovinus

1
perintah ini melarang saya dari postgres - sama seperti yang dikatakan @Amalgovinus.
Nam G VU

1
Jika Anda tidak dapat mengakses karena kesalahan psql: fe_sendauth: no password supplied, edit C:\Program Files\PostgreSQL\10\data\pg_hba.confdan ganti md5dengan trustdi 127.0.0.1/32bawah IPv4 local connectionsdan di ::1/128bawahIPv6 local connections
Marco Lackovic

1

Ini bekerja untuk saya:

alter role postgres password '';


4
Ketika saya melakukan ini di postgres 10, saya mendapatkan kesalahan "PEMBERITAHUAN: string kosong bukan kata sandi yang valid, menghapus kata sandi". Tapi tetap saja itu mengubah kata sandi saya dan saya tidak bisa masuk dengan apa pun! WTF !!
Amalgovinus

@Amalgovinus lihat komentar saya untuk jawaban lalligood
Marco Lackovic
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.