ลบข้อกำหนดรหัสผ่านสำหรับผู้ใช้ postgres


46

ฉันเข้าใจว่าเมื่อติดตั้งแล้ว PostgreSQL ไม่มีรหัสผ่านสำหรับผู้ใช้รูท db (postgres):

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

... และควรตั้งด้วย:

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

(แล้วอัปเดตpg_hba.confไฟล์ตาม)

คำถามของฉันคือสิ่งที่เป็น SQL postgresเพื่อใช้ในการกลับไปสู่สถานการณ์ก่อนหน้านี้เมื่อรหัสผ่านไม่ถูกต้องสำหรับผู้ใช้

โดยทั่วไปฉันจะลบข้อกำหนดรหัสผ่านสำหรับบทบาทใด ๆ ได้อย่างไร ฉันไม่ได้ถามวิธีเปลี่ยนรหัสผ่าน แต่ต้องการลบข้อกำหนดรหัสผ่าน ( passwdคอลัมน์ว่างในตารางpg_shadow)

คำตอบ:


55

จำเป็นต้องใช้รหัสผ่านหรือไม่และไม่เกี่ยวข้องกับpg_shadowรหัสผ่านที่กำหนดไว้สำหรับผู้ใช้จริงหรือไม่ ใช่ฉันรู้ว่ามันแปลก

pg_hba.confควบคุมวิธีการรับรองความถูกต้อง หากคุณต้องการขอรหัสผ่านให้ใช้การmd5ตรวจสอบความถูกต้อง trustหากคุณต้องการที่จะอนุญาตให้เข้าสู่ระบบด้วยรหัสผ่านให้กับทุกคนไม่ใช้ หากคุณต้องการชื่อผู้ใช้เดียวกันในระบบปฏิบัติการเช่นเดียวกับใน PostgreSQL ให้ใช้peer(UNIX เฉพาะสำหรับการเชื่อมต่อท้องถิ่น) หรือsspi(Windows)

หากมีการตั้งรหัสผ่าน แต่pg_hba.confไม่บอก PostgreSQL ให้ขอรหัสผ่านจะถูกละเว้น

หากpg_hba.confบอกให้ PostgreSQL ถามรหัสผ่าน แต่ไม่มีการตั้งค่าใด ๆ ความพยายามในการเข้าสู่ระบบทั้งหมดจะล้มเหลวไม่ว่าจะมีรหัสผ่านใด


12

ผู้ใช้ postgres โดยค่าเริ่มต้นไม่มีรหัสผ่าน ในการลบรหัสผ่านผู้ใช้ (ในกรณีนี้สำหรับผู้ใช้ / บทบาท postgres):

alter role postgres password null;

เรายังต้องตรวจสอบความถูกกำหนดให้trustในpg_hba.conf- ดูรายละเอียด [ https://dba.stackexchange.com/a/19657/52550]


3
ตอนนี้ฉันไม่สามารถใช้งาน psql ได้
Roberth Solís

3
ใช่ตอนนี้ฉันขอรหัสผ่านและไม่สามารถเข้าสู่ระบบ ...
Amalgovinus

1
คำสั่งนี้สั่งห้ามฉันจาก postgres - เหมือนกับ @Amalgovinus พูด
Nam G VU

1
หากคุณไม่สามารถเข้าถึงได้เนื่องจากข้อผิดพลาดpsql: fe_sendauth: no password suppliedให้แก้ไขC:\Program Files\PostgreSQL\10\data\pg_hba.confและแทนที่md5ด้วยtrustถัดจากด้าน127.0.0.1/32ล่างIPv4 local connectionsและข้าง::1/128ใต้IPv6 local connections
Marco Lackovic

1

สิ่งนี้ใช้ได้กับฉัน:

alter role postgres password '';


4
เมื่อฉันทำเช่นนี้ใน postgres 10 ฉันได้รับข้อผิดพลาด "ข้อสังเกต: สตริงว่างไม่ใช่รหัสผ่านที่ถูกต้องล้างรหัสผ่าน" แต่แล้วมันเปลี่ยนรหัสผ่านของฉันและฉันไม่สามารถเข้าสู่ระบบด้วยอะไร! WTF !!
Amalgovinus

@Amalgovinus เห็นความคิดเห็นของฉันที่จะตอบlalligood
มาร์โก Lackovic
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.