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 pg_hba.conf
dalam data_directory
database (yang bisa di /home
, /var/lib/pgsql
, /var/lib/postgresql/[version]/
, /opt/postgres/
, dll dll dll) namun pengguna dan pembuat paket bisa menempatkannya di mana pun mereka suka. Sayangnya.
Satu-satunya cara yang valid temukan pg_hba.conf
adalah dengan menanyakan contoh PostgreSQL yang sedang berjalan di mana tempatnya pg_hba.conf
, atau bertanya pada sysadmin di mana tempatnya. Anda bahkan tidak bisa mengandalkan bertanya di mana datadir berada dan 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 mengatur variabel lingkungan PGUSER
, PGDATABASE
dll untuk memastikan bahwa koneksi yang tepat.
Ya, ini agak masalah ayam dan telur, karena jika pengguna tidak dapat terhubung (katakanlah, setelah mengacaukan pengeditan pg_hba.conf
), Anda tidak dapat menemukannya pg_hba.conf
untuk memperbaikinya.
Pilihan lain adalah untuk melihat ps
output perintah 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 Anda berada di Debian / Ubuntu atau turunan dan menggunakan 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
da datadir seseorang di dir rumah mereka, atau instal EnterpriseDB Pg di / opt, dll. Anda dapat bertanya pg_wrapper
, Pg multi-versi Debian / Ubuntu multi-versi manajer, di mana PostgreSQL menggunakan satu pg_lsclusters
perintah dari pg_wrapper
.
Jika Anda tidak dapat terhubung (Pg tidak berjalan, atau Anda perlu mengedit pg_hba.conf
untuk menghubungkan) Anda harus mencari pg_hba.conf
file dari sistem . Di Mac dan Linux sesuatu seperti sudo find / -type f -name pg_hba.conf
akan dilakukan. Kemudian periksa PG_VERSION
file di direktori yang sama untuk memastikan itu adalah versi PostgreSQL yang tepat jika Anda memiliki lebih dari satu. (Jika pg_hba.conf
dalam /etc
/, abaikan ini, itu adalah nama direktori induknya). 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 ps
untuk melihat apakah -D
argumen direktori data cocok dengan tempat Anda mengedit, dll.