วิธีกำหนดค่า PostgreSQL เพื่อยอมรับการเชื่อมต่อขาเข้าทั้งหมด


106

ฉันมีฐานข้อมูล PostgreSQL ที่ฉันต้องการกำหนดค่าเพื่อยอมรับการเชื่อมต่อขาเข้าทั้งหมดโดยไม่คำนึงถึงที่อยู่ IP ต้นทาง จะกำหนดค่าในไฟล์ pg_hba.conf ได้อย่างไร? ฉันใช้ postgreSQL เวอร์ชัน 8.4

คำตอบ:


216

เพียงแค่ใช้0.0.0.0/0.

host    all             all             0.0.0.0/0            md5

ตรวจสอบให้แน่ใจว่าlisten_addressesin postgresql.conf(หรือALTER SYSTEM SET) อนุญาตการเชื่อมต่อขาเข้าบนอินเตอร์เฟส IP ที่มีอยู่ทั้งหมด

listen_addresses = '*'

หลังจากการเปลี่ยนแปลงคุณต้องโหลดการกำหนดค่าใหม่ วิธีหนึ่งในการดำเนินการนี้คือดำเนินการในSELECTฐานะ superuser

SELECT pg_reload_conf();

สิ่งนี้ใช้ได้กับประเภทmd5หรือไม่? ฉันคิดว่าจำเป็นต้องใช้ประเภทtrust...
Dan LaRocque

5
"trust" ช่วยให้ผู้ใช้ทุกคนสามารถเชื่อมต่อได้โดยไม่ต้องใช้รหัสผ่าน นั่นคือสิ่งที่ฉันจะไม่ใช้รหัสผ่านเป็นขั้นต่ำที่คุณควรใช้เสมอ แม้แต่ในคอมพิวเตอร์ของคุณเอง
Frank Heikens

1
อาฉันอ่านคำถามแตกต่างออกไป - ฉันคิดว่าเขาหมายถึงยอมรับการเชื่อมต่อจากลูกค้าทั้งหมดโดยไม่มีเงื่อนไข (สำหรับการทดสอบที่ไม่สำคัญบางอย่างอาจจะ) ฉันเห็นสิ่งที่คุณได้รับในตอนนี้
Dan LaRocque

6
หมายเหตุ : หากเครือข่ายของคุณเป็น IPv6 คุณจะต้องใช้::/0เมื่อเทียบกับ0.0.0.0/0เมื่อแก้ไขไฟล์ pg_hba.conf
Aron Boyette

2
ตรวจสอบให้แน่ใจว่าpostgresมีรหัสผ่านที่คาดเดายาก: sudo -u postgres psql, \password.
Adobe

47

0.0.0.0/0 สำหรับที่อยู่ IPv4 ทั้งหมด

::0/0 สำหรับที่อยู่ IPv6 ทั้งหมด

all เพื่อให้ตรงกับที่อยู่ IP ใด ๆ

samehost เพื่อให้ตรงกับที่อยู่ IP ของเซิร์ฟเวอร์ใด ๆ

samenet เพื่อจับคู่ที่อยู่ในเครือข่ายย่อยใด ๆ ที่เซิร์ฟเวอร์เชื่อมต่อโดยตรง

เช่น

host    all             all             0.0.0.0/0            md5

6

นอกเหนือจากคำตอบที่ยอดเยี่ยมข้างต้นหากคุณต้องการให้ IP บางช่วงได้รับอนุญาตคุณสามารถแก้ไข/var/lib/pgsql/{VERSION}/dataไฟล์และใส่สิ่งที่ต้องการได้

host all all 172.0.0.0/8 trust

จะยอมรับการเชื่อมต่อขาเข้าจากโฮสต์ใด ๆ ของช่วงข้างต้น ที่มา: http://www.linuxtopia.org/online_books/database_guides/Practical_PostgreSQL_database/c15679_002.htm


ขอบคุณสำหรับคำแนะนำช่วง!
leole

0

กำหนดค่าไฟล์ทั้งหมดด้วย postgres 12 บน centos:

ขั้นตอนที่ 1:ค้นหาและแก้ไขไฟล์

sudo vi /var/lib/pgsql/12/data/pg_hba.conf

กด "i" และที่บรรทัด IPv4 เปลี่ยน

host    all             all             0.0.0.0/0            md5

ขั้นตอนที่ 2:ค้นหาและแก้ไขไฟล์ postgresql.conf

sudo vi /var/lib/pgsql/12/data/postgresql.conf

เพิ่มบรรทัดสุดท้าย: listen_addresses = '*': wq! (บันทึกไฟล์) - ขั้นตอนที่ 3: รีสตาร์ท

systemctl restart postgresql-12.service

-6

เพิ่มบรรทัดนี้ในpg_hba.confของโฟลเดอร์ postgres

host    all    all    all    trust

"trust" ช่วยให้ผู้ใช้ทุกคนสามารถเชื่อมต่อได้โดยไม่ต้องใช้รหัสผ่าน


คุณอาจเพิ่มความคิดเห็นลงในโค้ดได้ไหม วางไว้ที่ไหนและทำงานอย่างไร?
Alistra

4
ขณะที่ข้อมูลโค้ดนี้คือการต้อนรับและอาจให้ความช่วยเหลือบางส่วนก็จะได้รับการปรับปรุงอย่างมากถ้ามันรวมถึงคำอธิบายของวิธีการและเหตุผลที่แก้ปัญหานี้ โปรดจำไว้ว่าคุณกำลังตอบคำถามสำหรับผู้อ่านในอนาคตไม่ใช่แค่คนที่ถามตอนนี้! โปรดแก้ไขคำตอบของคุณเพื่อเพิ่มคำอธิบายและระบุข้อ จำกัด และสมมติฐานที่ใช้
Toby Speight

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