pg_config
ใช้สำหรับข้อมูลการคอมไพล์เพื่อช่วยให้ส่วนขยายและโปรแกรมไคลเอนต์รวบรวมและเชื่อมโยงกับ PostgreSQL มันไม่รู้อะไรเลยเกี่ยวกับอินสแตนซ์ PostgreSQL ที่ใช้งานอยู่บนเครื่องเพียงไบนารี
pg_hba.conf
สามารถปรากฏได้ในหลาย ๆ ที่ทั้งนี้ขึ้นอยู่กับการติดตั้ง Pg สถานที่ตั้งมาตรฐานคือpg_hba.conf
ภายในdata_directory
ของฐานข้อมูล (ซึ่งอาจจะอยู่ใน/home
, /var/lib/pgsql
, /var/lib/postgresql/[version]/
, /opt/postgres/
ฯลฯ ฯลฯ ฯลฯ ) แต่ผู้ใช้และผู้ผลิตบรรจุภัณฑ์สามารถวางไว้ที่ใดก็ตามที่พวกเขาต้องการ น่าเสียดาย.
วิธีที่ถูกต้องในการค้นหาpg_hba.conf
คือถามอินสแตนซ์ของ PostgreSQL ที่กำลังทำงานpg_hba.conf
อยู่หรือถาม sysadmin คุณไม่สามารถเชื่อใจได้ว่าถามว่า datadir อยู่ที่ไหนและทำการแยกวิเคราะห์postgresql.conf
เพราะสคริปต์ init อาจส่งผ่านพารามิเตอร์เช่น-c hba_file=/some/other/path
เมื่อเริ่มต้น Pg
สิ่งที่คุณต้องการทำคือถาม PostgreSQL:
SHOW hba_file;
คำสั่งนี้จะต้องทำงานในเซสชัน superuser ดังนั้นสำหรับเชลล์สคริปต์คุณอาจเขียนสิ่งที่ชอบ:
psql -t -P format=unaligned -c 'show hba_file';
และการตั้งค่าตัวแปรสภาพแวดล้อมPGUSER
, PGDATABASE
ฯลฯ เพื่อให้มั่นใจว่าการเชื่อมต่อที่เหมาะสม
ใช่นี่เป็นปัญหาของไก่และไข่ในกรณีที่ผู้ใช้ไม่สามารถเชื่อมต่อ (พูดหลังจากแก้ไขการเมาแล้วpg_hba.conf
) คุณจะไม่สามารถpg_hba.conf
แก้ไขได้
อีกทางเลือกหนึ่งคือดูที่ps
ผลลัพธ์ของคำสั่งและดูว่าอาร์กิวเมนต์ไดเรกทอรีข้อมูลผู้ดูแลข้อมูล-D
สามารถมองเห็นได้หรือไม่เช่น
ps aux | grep 'postgres *-D'
เนื่องจากpg_hba.conf
จะอยู่ในไดเรกทอรีข้อมูล (นอกเสียจากว่าคุณจะใช้ Debian / Ubuntu หรือใช้อนุพันธ์และใช้แพ็คเกจ)
หากคุณกำหนดเป้าหมายเฉพาะระบบ Ubuntu ที่ติดตั้ง PostgreSQL จากแพ็คเกจ Debian / Ubuntu มันจะง่ายขึ้นเล็กน้อย คุณไม่ต้องจัดการกับ Pg ที่คอมไพล์จากแหล่งที่ใครบางคนinitdb
'ดาต้าดาต้าสำหรับในบ้านของพวกเขาหรือการติดตั้ง EnterpriseDB Pg ใน / opt ฯลฯ คุณสามารถถามpg_wrapper
Pg Debian / Ubuntu หลายรุ่น ผู้จัดการที่ PostgreSQL ใช้คำสั่งจากpg_lsclusters
pg_wrapper
หากคุณไม่สามารถเชื่อมต่อได้ (Pg ไม่ทำงานหรือคุณต้องแก้ไขpg_hba.conf
เพื่อเชื่อมต่อ) คุณจะต้องค้นหาระบบpg_hba.conf
ไฟล์ บน Mac และ Linux sudo find / -type f -name pg_hba.conf
จะทำอะไรบางอย่าง จากนั้นตรวจสอบPG_VERSION
ไฟล์ในไดเรกทอรีเดียวกันเพื่อให้แน่ใจว่าเป็นรุ่น PostgreSQL ที่ถูกต้องหากคุณมีมากกว่าหนึ่ง (หากpg_hba.conf
อยู่ใน/etc
/ ให้ข้ามสิ่งนี้เป็นชื่อไดเรกทอรีหลักแทน) หากคุณมีไดเรกทอรีข้อมูลมากกว่าหนึ่งรายการสำหรับรุ่น PostgreSQL เดียวกันคุณจะต้องดูขนาดฐานข้อมูลตรวจสอบบรรทัดคำสั่งของ postgres ที่รันอยู่ps
เพื่อดูว่า-D
อาร์กิวเมนต์ของไดเรกทอรีข้อมูลตรงกับที่คุณแก้ไขหรือไม่เป็นต้น