การพิสูจน์ตัวตนด้วยรหัสผ่านของ Postgres ล้มเหลว


36

ฉันติดตั้ง PostgreSQL 9.1 และ pgadmin3 บน Ubuntu Server 13.10 แล้ว

ฉันกำหนดค่า postgresql.conf ด้วย: listen_addresses = '*'

ฉันยังกำหนดค่า ph_hba.conf โดยเปลี่ยนการเชื่อมต่อแบบเพียร์เป็น md5

รวมทั้งฉันรีเซ็ตรหัสผ่านของ postgres โดย: sudo password postgres

จากนั้นรีสตาร์ทบริการด้วย sudo /etc/init.d/postgresql restart

หลังจากนั้นฉันพยายามเชื่อมต่อกับฐานข้อมูลเทมเพลต PostgreSQL ที่เป็นค่าเริ่มต้น:

sudo -u postgres psql template1

แต่การเข้าสู่ระบบล้มเหลวด้วยข้อความแสดงข้อผิดพลาดนี้:

psql: FATAL:  password authentication failed for user "postgres"

จากนั้นฉันพยายามเข้าสู่ระบบจาก pgadmin ซึ่งทำให้ฉันมีข้อผิดพลาดเดียวกัน

ฉันอ่านที่นี่ว่าอาจเป็นวันหมดอายุรหัสผ่านข้อผิดพลาด ผู้ใช้ PostgreSQL ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์หลังจากเปลี่ยนรหัสผ่าน

แต่ฉันแก้ไม่ได้เพราะฉันไม่สามารถเข้าสู่ระบบด้วย psql มีใครบ้างตอนนี้ที่จะแก้ไขปัญหานี้หรือไม่?

แก้ไข

ไฟล์ ph_hba:

ที่นี่

ภาพหน้าจอ:

ป้อนคำอธิบายรูปภาพที่นี่


6
ฉันค่อนข้างหงุดหงิดกับความจริงที่ว่าคุณได้โคลนโพสต์นี้ ฉันเพิ่งเขียนคำตอบนี้เพื่อค้นพบว่าคุณโพสต์คำถามเดียวกันกับ stackoverflow.com ที่มีคำตอบที่ยอมรับแล้ว อย่าคัดลอกและวางคำตอบระหว่างไซต์คุณเสียเวลาของทุกคนและทำให้การค้นหาข้อมูลทำได้ยากขึ้น หากคุณยืนยันในการทำเช่นนี้ให้เชื่อมโยงระหว่างพวกเขา
Craig Ringer

คำตอบ:


66

คุณสับสนรหัสผ่านสำหรับผู้ใช้ unix "postgres" ด้วยรหัสผ่านฐานข้อมูลสำหรับผู้ใช้ฐานข้อมูล "postgres" สิ่งเหล่านี้ไม่เหมือนกัน

คุณได้ล็อคตัวเองออกเพราะคุณเปิดใช้งานmd5การตรวจสอบฐานข้อมูลสำหรับผู้ใช้โดยไม่ต้องตั้งรหัสผ่านสำหรับผู้ใช้ฐานข้อมูลpostgrespostgres

เพิ่มบรรทัดใหม่ที่ด้านบนของpg_hba.conf:

local    postgres     postgres     peer

จากนั้นรีสตาร์ท / โหลด PostgreSQL แล้ว:

sudo -u postgres psql

จากพรอมต์ผลลัพธ์:

ALTER USER postgres PASSWORD 'my_postgres_password';

แล้วเอาสายคุณเพิ่มเข้าไปpg_hba.confและเริ่มต้นใหม่อีกครั้งหน้า ตอนนี้คุณสามารถใช้รหัสผ่านที่คุณตั้งไว้ด้านบนเพื่อเชื่อมต่อกับ PostgreSQL ในฐานะpostgresผู้ใช้

ต้องการเรียนรู้เพิ่มเติมโปรดอ่าน"การตรวจสอบลูกค้า" บทหนึ่งของคู่มือการใช้และเอกสารเกี่ยวกับpg_hba.conf


1
ทดสอบ pg9.6.6 ใหม่ในเซิร์ฟเวอร์ UBUNTU 16 LTS .... และฉันรู้สึกประหลาดใจกับ "ปัญหาของผู้เริ่มต้น" ทั้งหมดเหล่านี้ มาถึงที่นี่ด้วยวิธีการแก้ปัญหา ... ทำทีละขั้นตอน ... ความประหลาดใจใหญ่: ไม่ทำงาน! psql -W postgresql://postgres:postgres@localhostการผลิตเดิมอีกครั้ง"FATAL: รหัสผ่านการตรวจสอบล้มเหลวสำหรับผู้ใช้ 'postgres'"
ปีเตอร์อูส

การแก้ไข: ทุกสายความไว้วางใจคือการทำงาน ...
ปีเตอร์อูส

ฉันกำลังใช้ ssh ... หลังจากนำทั้งหมดกลับไปที่ md5 ทีละรายการ (โลคัลโฮสต์โฮสต์ ... ) เฉพาะบรรทัด "โฮสต์ทั้งหมด 127.0.0.1/32 ความน่าเชื่อถือ" ไม่สามารถเปลี่ยนแปลงถูกเก็บรักษาไว้ด้วย " ไว้วางใจ" ดังนั้นคำถามใหม่: ทำไม
Peter Krauss

ไฟล์เป็นเจ้าของโดยผู้ใช้ระบบpg_hba.conf postgresฉันรู้รหัสผ่านฐานข้อมูลของผู้ใช้ฐานข้อมูลpostgresเท่านั้นดังนั้นคำถามคือฉันจะแก้ไขไฟล์ conf นี้ได้อย่างไรโดยไม่เปลี่ยนความเป็นเจ้าของ
Shailen

คุณสามารถบอกได้โปรดสิ่งที่บรรทัดlocal postgres postgres peerที่จำเป็นจริงๆสำหรับในpg_hba.conf? ทุกอย่างทำงานได้ดีหากไม่มีมัน
MaxCore

3

ลองแก้ไขรหัสผ่านของฐานข้อมูลเทมเพลต 1 โดยใช้:

$ psql -c "ALTER USER postgres WITH PASSWORD 'yourPassword'" -d template1

ทำให้ฉันมีข้อผิดพลาดเหมือนกัน แต่กับผู้ใช้ "root" แทนผู้ใช้ "postgres"
Shadin

คุณช่วยอธิบายได้ไหมว่าทำไมสิ่งนี้ถึงช่วยได้
xliiv

2

ใน pg_hba.conf ของคุณ

# IPv4 local connections:
# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
host    all         all         127.0.0.1/32         trust

ถ้ามันไม่ทำงานลองด้วย

host    all         all         your_ip/32         trust

จากนั้นรีสตาร์ทฐานข้อมูลของคุณมันจะทำงานได้ดี .. ถ้าคุณเชื่อใจก็ไม่จำเป็นต้องใช้รหัสผ่านถ้าคุณทำ MD5 แล้วมันจะถามรหัสผ่าน ...


3
อย่าใช้วิธีนี้ทุกที่คุณควร จำกัด การเข้าถึงข้อมูลของคุณโดยผู้ใช้
ต้องการตัวมากที่สุด

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