pg_config serve per le informazioni sulla compilazione, per aiutare le estensioni e i programmi client a compilare e linkare PostgreSQL. Non sa nulla delle istanze PostgreSQL attive sulla macchina, solo i binari.
pg_hba.conf può apparire in molti altri posti a seconda di come è stato installato Pg. Il percorso standard è pg_hba.conf all'interno della directory data_dati del database (che potrebbe essere in / home, / var / lib / pgsql, / var / lib / postgresql / [versione] /, / opt / postgres /, etc etc etc etc) ma utenti e packager possono metterlo dove vogliono. Purtroppo.
L'unico modo valido per trovare pg_hba.conf è chiedere a un'istanza PostgreSQL in esecuzione dove si trova pg_hba.conf o chiedere al sysadmin dove si trova. Non puoi nemmeno fare affidamento sul chiedere dove si trova il datadir e sull'analisi di postgresql.conf perché uno script init potrebbe passare un parametro come -c hba_file = / some / other / path all'avvio di Pg.
Quello che vuoi fare è chiedere a PostgreSQL:
SHOW hba_file;
Questo comando deve essere eseguito su una sessione di superutente, quindi per gli script di shell potresti scrivere qualcosa del tipo:
psql -t -P format=unaligned -c 'show hba_file';
e impostare le variabili d'ambiente PGUSER, PGDATABASE, ecc. per assicurarsi che la connessione sia corretta.
Sì, questo è un po 'un problema a base di gallina e uovo, in quanto se l'utente non riesce a connettersi (diciamo, dopo aver rovinato la modifica di pg_hba.conf) non è possibile trovare pg_hba.conf per risolverlo.
Un'altra opzione è guardare l'output del comando ps e vedere se l'argomento della directory dei dati del postmaster -D è visibile lì, ad es
ps aux | grep 'postgres *-D'
poiché pg_hba.conf sarà all'interno della directory dei dati (a meno che tu non sia su Debian / Ubuntu o su qualche derivato e usi i loro pacchetti).
Se stai prendendo di mira specificamente i sistemi Ubuntu con PostgreSQL installato dai pacchetti Debian / Ubuntu diventa un po 'più facile. Non hai a che fare con Pg compilato a mano dalla fonte per cui qualcuno ha avviato un datadir nella propria directory home o un'installazione Enterprise PB in / opt, ecc. Puoi chiedere a pg_wrapper, il multi Debian / Ubuntu -version Pg manager, in cui PostgreSQL utilizza il comando pg_lsclusters da pg_wrapper.
Se non riesci a connetterti (Pg non è in esecuzione o devi modificare pg_hba.conf per connetterti) dovrai cercare nel sistema i file pg_hba.conf. Su Mac e Linux farà qualcosa come sudo find / -type f -name pg_hba.conf. Quindi controlla il file PG_VERSION nella stessa directory per assicurarti che sia la versione PostgreSQL giusta se ne hai più di una. (Se pg_hba.conf è in / etc /, ignoralo, è invece il nome della directory principale). Se hai più di una directory di dati per la stessa versione di PostgreSQL dovrai guardare le dimensioni del database, controlla la riga di comando dei postgres in esecuzione da ps per vedere se la sua directory di dati -D argomento corrisponde a dove stai modificando, ecc. .
/ubuntu/256534/how-do-i-find-the-path-to-pg-hba-conf-from-the-shell/256711