pg_config adalah untuk informasi pelengkap, untuk membantu ekstensi dan program klien menyusun dan menautkannya dengan PostgreSQL. Ia tidak tahu apa-apa tentang instance PostgreSQL aktif pada mesin, hanya binari-binari.
pg_hba.conf dapat muncul di banyak tempat lain tergantung pada bagaimana Pg dipasang. Lokasi standar adalah pg_hba.conf dalam data_directory database (yang bisa di / home, / var / lib / pgsql, / var / lib / postgresql / [versi] /, / opt / postgres /, dll dll) tetapi pengguna dan pembuat paket dapat meletakkannya di mana saja mereka suka. Sayangnya.
Satu-satunya cara yang valid untuk menemukan pg_hba.conf adalah dengan menanyakan instance PostgreSQL yang menjalankan di mana pg_hba.conf berada, atau bertanya kepada sysadmin di mana letaknya. Anda bahkan tidak dapat bergantung pada bertanya di mana datadir berada dan mem-parsing postgresql.conf karena skrip init mungkin melewati param seperti -c hba_file = / some / other / path ketika memulai Pg.
Yang ingin Anda lakukan adalah bertanya pada PostgreSQL:
SHOW hba_file;
Perintah ini harus dijalankan pada sesi pengguna super, jadi untuk skrip shell Anda dapat menulis sesuatu seperti:
psql -t -P format=unaligned -c 'show hba_file';
dan atur variabel lingkungan PGUSER, PGDATABASE, dll untuk memastikan bahwa koneksi benar.
Ya, ini agak masalah ayam-dan-telur, dalam hal itu jika pengguna tidak dapat terhubung (katakanlah, setelah mengacaukan pengeditan pg_hba.conf) Anda tidak dapat menemukan pg_hba.conf untuk memperbaikinya.
Pilihan lain adalah untuk melihat output perintah ps dan melihat apakah argumen direktori data postmaster -D terlihat di sana, misalnya
ps aux | grep 'postgres *-D'
karena pg_hba.conf akan berada di dalam direktori data (kecuali jika Anda menggunakan Debian / Ubuntu atau turunan dan menggunakan paket-paket mereka).
Jika Anda menargetkan secara khusus sistem Ubuntu dengan PostgreSQL terinstal dari paket Debian / Ubuntu, itu akan menjadi sedikit lebih mudah. Anda tidak harus berurusan dengan Pg yang dikompilasi dengan tangan dari sumber yang initdb milik seseorang di dir rumah mereka, atau menginstal EnterpriseDB Pg di / opt, dll. Anda dapat meminta pg_wrapper, multi Debian / Ubuntu multi -version Pg manager, di mana PostgreSQL menggunakan perintah pg_lsclusters dari pg_wrapper.
Jika Anda tidak dapat terhubung (Pg tidak berjalan, atau Anda perlu mengedit pg_hba.conf untuk terhubung) Anda harus mencari file pg_hba.conf sistem. Di Mac dan Linux, sesuatu seperti sudo find / -type f -name pg_hba.conf akan berfungsi. Kemudian periksa file PG_VERSION di direktori yang sama untuk memastikan itu adalah versi PostgreSQL yang tepat jika Anda memiliki lebih dari satu. (Jika pg_hba.conf di / etc /, abaikan ini, itu adalah nama direktori induk). Jika Anda memiliki lebih dari satu direktori data untuk versi PostgreSQL yang sama, Anda harus melihat ukuran basis data, periksa baris perintah postgres yang berjalan dari ps untuk melihat apakah direktori data -D argumen yang cocok dengan tempat Anda mengedit, dll. .
/ubuntu/256534/how-do-i-find-the-path-to-pg-hba-conf-from-the-shell/256711