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_config
comando, pero no parece incluir esta información.
Esto es para que pueda usar un comando uniforme para abrir pg_hba.conf
y 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-atime
si 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.conf
mientras el servidor está funcionando no funciona).Respuestas:
pg_config
es 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.conf
puede aparecer en muchos otros lugares dependiendo de cómo se instaló Pg. La ubicación estándar espg_hba.conf
en eldata_directory
de 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.conf
es preguntarle a una instancia de PostgreSQL en ejecución dóndepg_hba.conf
está, o preguntarle al administrador del sistema dónde está. Ni siquiera puede confiar en preguntar dónde está el datadir y analizarpostgresql.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:
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
,PGDATABASE
etc 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.conf
para solucionarlo.Otra opción es mirar la
ps
salida del comando y ver si el argumento del directorio de datos del postmaster-D
está visible allí, p. Ej.ya
pg_hba.conf
que 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
initdb
en 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_lsclusters
comando depg_wrapper
.Si no puede conectarse (Pg no se está ejecutando o necesita editar
pg_hba.conf
para conectarse), tendrá que buscarpg_hba.conf
archivos en el sistema . En Mac y Linux, algo comosudo find / -type f -name pg_hba.conf
lo hará. Luego verifique elPG_VERSION
archivo en el mismo directorio para asegurarse de que sea la versión correcta de PostgreSQL si tiene más de uno. (Sipg_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ónps
para ver si el-D
argumento del directorio de datos coincide con el que está editando, etc.fuente
psql: invalid port number: "format=unaligned"
cuando ejecuto ese comando psql.-P
no-p
. Fijo.Así es como lo hago:
Como el camino es así:
/etc/postgresql/[VERSION]/main/pg_hba.conf
fuente
Estoy usando lo siguiente para la detección de archivos de configuración:
fuente
Editar lo correcto
pg_hba.conf
con su editor visual predeterminado (vim, emacs, nano, joe, etc.) es tan fácil como:$VISUAL /etc/postgresql/$(ls /etc/postgresql)/main/pg_hba.conf
fuente
Pregunta a tu base de datos:
fuente
Para saber dónde está el archivo simplemente escriba:
fuente