การกำหนดค่าไฟล์ pg_hba.conf เพื่ออนุญาตการเข้าถึงจากเซิร์ฟเวอร์อื่นไปยังฐานข้อมูล


15

ฉันมีฐานข้อมูล postgres บนเซิร์ฟเวอร์หนึ่งและฉันต้องการเข้าถึงจากเซิร์ฟเวอร์อื่น

ฉันต้องการแก้ไขไฟล์ pg_hba.conf แต่ตอนนี้มีความคิดว่าขั้นตอนในการแก้ไขไฟล์นี้คืออะไร เซิร์ฟเวอร์ Centos

ฉันต้องการเพิ่มบรรทัดต่อไปนี้ในไฟล์

host    all         all         10.0.2.12         255.255.255.255   trust

ฉันพบมันใน var/lib/pgsql/data/

ตอนนี้โดยทั่วไปฉันไม่แน่ใจว่าขั้นตอนที่ถูกต้องในการทำสิ่งนี้คืออะไร

คำตอบ:


14

ก่อนอื่นให้ทำสำเนาสำรองของ pg_hba.conf ที่ให้มา

sudo tar cvf /var/tmp/mybackup_pg_hba_conf.tar /var/lib/pgsql/data/pg_hba.conf

วิธีนี้ทำให้คุณมีเวอร์ชั่นเก่ากว่าถ้าคุณพลาด คุณลักษณะที่ดีของการเก็บถาวร tar คือการรักษาสิทธิ์และไดเรกทอรี ดังนั้นเมื่อ pg_hba.conf แตกเกินการจดจำ คุณสามารถ:

cd /
sudo tar xvf /var/tmp/mybackup_pg_hba_conf.tar

สิ่งนี้จะกู้คืนข้อมูลสำรอง pg_hba.conf จากไฟล์เก็บถาวรที่คุณสร้างไว้ก่อนหน้านี้

สำหรับการแทรกบรรทัดจริง:

sudo su -c 'echo "host    all         all         10.0.2.12         255.255.255.255   trust" >> /var/lib/pgsql/data/pg_hba.conf'

(หมายเหตุ: แก้ไขคำสั่งขอบคุณ bortzmeyer!)

ควรทำอย่างไร โปรดทราบว่านี่จะเป็นการต่อบรรทัดเข้าไปใน pg_hba.conf หากคุณต้องการเปลี่ยนแปลงคุณต้องใช้โปรแกรมแก้ไขจริง เช่นเดียวกับ vi มันเป็นช่วงการเรียนรู้ที่ค่อนข้างชัน แต่หลังจากที่คุณได้เรียนรู้พื้นฐานอย่างน้อยคุณควรจะปลอดภัยในทุกสภาพแวดล้อมที่คุณพบเจอ

ตอนนี้ฉันกลับมาที่แทร็กแล้วคุณควรลองรีสตาร์ทฐานข้อมูล postgresql ของคุณต่อไป บนเครื่อง Centos ฉันเชื่อว่าทำได้โดย:

sudo service postgresql restart

หรือคุณสามารถโหลดการกำหนดค่าใหม่ได้โดยไม่ต้องรีสตาร์ท:

su - postgres
pg_ctl reload

ตอนนี้คุณควรจะสามารถเข้าถึงฐานข้อมูล postrgresql ของเครื่อง Centos ได้จาก 10.0.2.12


1
sudo ในคำสั่งสุดท้ายจะไม่ทำงานเนื่องจากการดำเนินการที่ถูกทำให้เป็นส่วนตัวนั้นทำโดยการเปลี่ยนเส้นทางซึ่งจัดการโดยเชลล์ไม่ใช่โดยโปรแกรมที่คุณรันด้วย sudo (echo ในกรณีนี้)
bortzmeyer

จุดดี! ควรเขียนเป็น sudo "echo 'host ทั้งหมด 10.0.2.12 255.255.255.255 trust' >>
/var/lib/pgsql/data/pg_hba.conf

วิธีที่เหมาะสมที่สุดคือการวางไว้ภายใต้การควบคุมเวอร์ชันในตำแหน่งผู้ดูแลระบบและปรับใช้หลังจากเปลี่ยนผ่าน SSH และอื่น ๆ
vfclists

1
ตำแหน่งเริ่มต้นของไฟล์ pg_hba.conf แตกต่างกันเล็กน้อยใน 9.4: /var/lib/pgsql/9.4/data/pg_hba.conf
Sergey Vlasov

13

อย่าลืมแก้ไข postgresql.conf และเปลี่ยน / เพิ่มบรรทัด

listen_addresses = '*'

Postgresql โดยค่าเริ่มต้นฟังบน localhost


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