Me gustaría obtener la ruta a pg_hba.conf desde el shell. La ruta varía entre versiones de PostgreSQL. Por ejemplo, para 8.4 y 9.1:
/etc/postgresql/8.4/main/pg_hba.conf
/etc/postgresql/9.1/main/pg_hba.conf
He probado el pg_configcomando, pero no parece incluir esta información.
Esto es para que pueda usar un comando uniforme para abrir pg_hba.confy otros archivos de configuración de PostgreSQL para editar.
Estoy usando bash
postgresql
Roger Dahl
fuente
fuente

find / -name pg_hba.conf -amin -5(si el servidor se ha reiniciado en los últimos 5 minutos; es bastante fácil cambiarlo-atimesi se reinició por última vez hace más tiempo). O puede filtrar por tiempo de acceso más nuevo que el tiempo de cambio o una de las otras opciones basadas en el tiempo de búsqueda ... (Aunque el filtrado porlsof | grep pg_hba.confmientras el servidor está funcionando no funciona).Respuestas:
pg_configes para información de compilación, para ayudar a las 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.confpuede aparecer en muchos otros lugares dependiendo de cómo se instaló Pg. La ubicación estándar espg_hba.confen eldata_directoryde la base de datos (que podría ser en/home,/var/lib/pgsql,/var/lib/postgresql/[version]/,/opt/postgres/, etc, etc, etc) pero los usuarios y envasadores pueden ponerlo donde quieran. Desafortunadamente.La única forma válida de encontrar
pg_hba.confes preguntarle a una instancia de PostgreSQL en ejecución dóndepg_hba.confestá, o preguntarle al administrador del sistema dónde está. Ni siquiera puede confiar en preguntar dónde está el datadir y analizarpostgresql.confporque un script de inicio podría pasar un parámetro como-c hba_file=/some/other/pathal iniciar Pg.Lo que quieres hacer es preguntarle a PostgreSQL:
Este comando debe ejecutarse en una sesión de superusuario, por lo que para las secuencias de comandos de shell puede escribir algo como:
y establecer las variables de entorno
PGUSER,PGDATABASEetc para asegurarse de que la conexión es correcta.Sí, esto es algo así como un problema de huevo y gallina, en el sentido de que si el usuario no puede conectarse (por ejemplo, después de arruinar la edición
pg_hba.conf) no puede encontrarlopg_hba.confpara solucionarlo.Otra opción es mirar la
pssalida del comando y ver si el argumento del directorio de datos del postmaster-Destá visible allí, p. Ej.ya
pg_hba.confque estará dentro del directorio de datos (a menos que esté en Debian / Ubuntu o alguna derivada y esté usando sus paquetes).Si se dirige 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 la Pg compilada a mano desde la fuente para la cual el dadir de datos de alguien
initdben su directorio de inicio, o una instalación de EnterpriseDB Pg en / opt, etc. Puede preguntarpg_wrapper, la Pg de múltiples versiones de Debian / Ubuntu manager, donde PostgreSQL está utilizando elpg_lsclusterscomando depg_wrapper.Si no puede conectarse (Pg no se está ejecutando o necesita editar
pg_hba.confpara conectarse), tendrá que buscarpg_hba.confarchivos en el sistema . En Mac y Linux, algo comosudo find / -type f -name pg_hba.conflo hará. Luego verifique elPG_VERSIONarchivo en el mismo directorio para asegurarse de que sea la versión correcta de PostgreSQL si tiene más de uno. (Sipg_hba.confestá 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ónpspara ver si el-Dargumento del directorio de datos coincide con el que está editando, etc.fuente
psql: invalid port number: "format=unaligned"cuando ejecuto ese comando psql.-Pno-p. Fijo.Así es como lo hago:
Como el camino es así:
/etc/postgresql/[VERSION]/main/pg_hba.conffuente
Estoy usando lo siguiente para la detección de archivos de configuración:
fuente
Editar lo correcto
pg_hba.confcon su editor visual predeterminado (vim, emacs, nano, joe, etc.) es tan fácil como:$VISUAL /etc/postgresql/$(ls /etc/postgresql)/main/pg_hba.conffuente
Pregunta a tu base de datos:
fuente
Para saber dónde está el archivo simplemente escriba:
fuente