PostgreSQL: การรีเซ็ตรหัสผ่านของ PostgreSQL บน Ubuntu [ปิด]


97

ใน Ubuntu ฉันติดตั้งฐานข้อมูล PostgreSQL และสร้าง superuser สำหรับเซิร์ฟเวอร์

หากฉันลืมรหัสผ่านของ postgresql superuser ฉันจะรีเซ็ต (รหัสผ่าน) สำหรับผู้ใช้นั้นได้อย่างไร

ฉันลองถอนการติดตั้งแล้วติดตั้งอีกครั้ง แต่ superuser ที่สร้างไว้ก่อนหน้านี้จะยังคงอยู่

คำตอบ:


217

สมมติว่าคุณเป็นผู้ดูแลระบบของเครื่อง, อูบุนตูอนุญาตให้คุณสิทธิที่จะsudoเพื่อเรียกใช้คำสั่งใด ๆ ที่เป็นผู้ใช้ใด ๆ
นอกจากนี้สมมติว่าคุณไม่ได้ จำกัด สิทธิ์ในpg_hba.confไฟล์ (ใน/etc/postgresql/9.1/mainไดเร็กทอรี) ควรมีบรรทัดนี้เป็นกฎข้อแรก:

# Database administrative login by Unix domain socket  
local   all             postgres                                peer

(เกี่ยวกับตำแหน่งไฟล์: 9.1เป็นเวอร์ชัน postgres หลักและmainชื่อ "คลัสเตอร์" ของคุณซึ่งจะแตกต่างกันหากใช้ postgres เวอร์ชันใหม่กว่าหรือชื่อที่ไม่ใช่ค่าเริ่มต้นใช้pg_lsclustersคำสั่งเพื่อรับข้อมูลนี้สำหรับเวอร์ชัน / ระบบของคุณ)

อย่างไรก็ตามหากpg_hba.confไฟล์ไม่มีบรรทัดนั้นให้แก้ไขไฟล์เพิ่มและโหลดบริการใหม่ด้วยsudo service postgresql reload.

จากนั้นคุณควรจะสามารถเข้าสู่ระบบด้วยpsqlเป็น superuser postgres ด้วยคำสั่งเชลล์นี้:

sudo -u postgres psql

เมื่ออยู่ใน psql ให้ออกคำสั่ง SQL:

ALTER USER postgres PASSWORD 'newpassword';

ในคำสั่งนี้postgresเป็นชื่อของ superuser หากผู้ใช้ที่ลืมรหัสผ่านriteshคำสั่งจะเป็น:

ALTER USER ritesh PASSWORD 'newpassword';

อ้างอิง: เอกสารPostgreSQL 9.1.13 บทที่ 19. การรับรองความถูกต้องของไคลเอ็นต์

โปรดทราบว่าคุณต้องพิมพ์postgresด้วยS ตัวเดียวต่อท้าย

หากปล่อยให้รหัสผ่านเป็นข้อความที่ชัดเจนในประวัติของคำสั่งหรือบันทึกของเซิร์ฟเวอร์เป็นปัญหา psql จะจัดเตรียมเมตา - คำสั่งแบบโต้ตอบเพื่อหลีกเลี่ยงสิ่งนั้นเป็นทางเลือกอื่นแทนALTER USER ... PASSWORD:

\password username

ระบบจะถามรหัสผ่านด้วยอินพุตแบบ double blind จากนั้นจึงแฮชตามการpassword_encryptionตั้งค่าและออกALTER USERคำสั่งไปยังเซิร์ฟเวอร์ด้วยรหัสผ่านที่แฮชแทนเวอร์ชันข้อความที่ชัดเจน


2
ฉันใช้วิธีการของคุณชื่อผู้ใช้ขั้นสูงของฉันคือ ritesh pg_hba.conf ของฉันคือตามที่คุณกล่าวถึงฉันเรียกใช้คำสั่ง "ALTER USER postgres PASSWORD 'newpassword';" คอนโซลกำลังแสดง 'แก้ไขบทบาท' จากนั้นฉันออกโดยใช้ ctrl + c หลังจากนั้นฉันเรียกใช้คำสั่ง createuser มันแสดงให้ป้อนรหัสผ่านฉันป้อนรหัสผ่านใหม่ แต่มันทำให้ฉันมีข้อผิดพลาด "createuser: ไม่สามารถเชื่อมต่อกับฐานข้อมูล postgres: FATAL : การตรวจสอบรหัสผ่านล้มเหลวสำหรับผู้ใช้ "ritesh" "วิธีสร้างผู้ใช้และรหัสผ่านสำหรับคำสั่งนี้ควรเป็นอย่างไร ??
Ritesh Mehandiratta

หากคุณต้องการเปลี่ยนรหัสผ่านให้riteshเปลี่ยน SQL ด้านบนเป็นALTER USER ritesh PASSWORD 'newpassword'
Daniel Vérité

คุณควรรีสตาร์ท postgres หลังจากเปลี่ยน pg_hba.conf ....
Mahdi

1
ไม่จำเป็นต้องรีสตาร์ทเพียงแค่ใช้ pg_ctl reload
hbn

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