pg_config es para información de compilación, para ayudar a extensiones y programas de clientes a compilar y vincular contra PostgreSQL. No sabe nada sobre las instancias activas de PostgreSQL en la máquina, solo los binarios.
pg_hba.conf puede aparecer en muchos otros lugares dependiendo de cómo se instaló Pg. La ubicación estándar es pg_hba.conf dentro del directorio de datos de la base de datos (que podría estar en / home, / var / lib / pgsql, / var / lib / postgresql / [versión] /, / opt / postgres /, etc., etc.) pero los usuarios y empaquetadores pueden ponerlo donde quieran. Desafortunadamente.
Las únicas formas válidas de encontrar pg_hba.conf es preguntarle a una instancia de PostgreSQL en ejecución dónde está pg_hba.conf, o preguntarle al administrador del sistema dónde está. Ni siquiera puede confiar en preguntar dónde está el datadir y analizar postgresql.conf porque un script de inicio podría pasar un parámetro como -c hba_file = / some / other / path al iniciar Pg.
Lo que quieres hacer es preguntarle a PostgreSQL:
SHOW hba_file;
Este comando debe ejecutarse en una sesión de superusuario, por lo que para las secuencias de comandos de shell puede escribir algo como:
psql -t -P format=unaligned -c 'show hba_file';
y configure las variables de entorno PGUSER, PGDATABASE, etc. para garantizar que la conexión sea correcta.
Sí, este es un problema de huevo y gallina, ya que si el usuario no puede conectarse (por ejemplo, después de arruinar la edición de pg_hba.conf) no puede encontrar pg_hba.conf para solucionarlo.
Otra opción es mirar la salida del comando ps y ver si el argumento del directorio de datos postmaster -D está visible allí, por ejemplo
ps aux | grep 'postgres *-D'
dado que pg_hba.conf estará dentro del directorio de datos (a menos que esté en Debian / Ubuntu o alguna derivada y esté usando sus paquetes).
Si está apuntando específicamente a sistemas Ubuntu con PostgreSQL instalado desde paquetes Debian / Ubuntu, se vuelve un poco más fácil. No tiene que lidiar con una Pg compilada a mano desde la fuente para la que alguien ha iniciado un datadir en su directorio de inicio, o una instalación de EnterpriseDB Pg en / opt, etc. Puede preguntarle a pg_wrapper, Debian / Ubuntu multi -version Pg manager, donde PostgreSQL está usando el comando pg_lsclusters de pg_wrapper.
Si no puede conectarse (Pg no se está ejecutando, o necesita editar pg_hba.conf para conectarse), tendrá que buscar en el sistema archivos pg_hba.conf. En Mac y Linux, algo como sudo find / -type f -name pg_hba.conf servirá. Luego verifique el archivo PG_VERSION en el mismo directorio para asegurarse de que sea la versión correcta de PostgreSQL si tiene más de uno. (Si pg_hba.conf está en / etc /, ignore esto, es el nombre del directorio principal). Si tiene más de un directorio de datos para la misma versión de PostgreSQL, tendrá que mirar el tamaño de la base de datos, verifique la línea de comando de los postgres en ejecución desde ps para ver si el argumento del directorio de datos -D coincide con el lugar donde está editando, etc. .
/ubuntu/256534/how-do-i-find-the-path-to-pg-hba-conf-from-the-shell/256711