pg_config
é para informações de compliação, para ajudar extensões e programas clientes a serem compilados e vinculados ao PostgreSQL. Ele não sabe nada sobre as instâncias ativas do PostgreSQL na máquina, apenas os binários.
pg_hba.conf
pode aparecer em muitos outros lugares, dependendo de como a página foi instalada. A localização padrão é pg_hba.conf
dentro do data_directory
do banco de dados (que pode ser em /home
, /var/lib/pgsql
, /var/lib/postgresql/[version]/
, /opt/postgres/
, etc etc etc) mas os usuários e empacotadores pode colocá-lo onde quiserem. Infelizmente.
As únicas maneiras válidas encontradas pg_hba.conf
são perguntar a uma instância do PostgreSQL em execução, onde pg_hba.conf
está, ou perguntar ao administrador de sistemas, onde está. Você não pode nem perguntar onde está o datadir e a análise, postgresql.conf
porque um script init pode ter passado um parâmetro como -c hba_file=/some/other/path
ao iniciar a página.
O que você quer fazer é perguntar ao PostgreSQL:
SHOW hba_file;
Este comando deve ser executado em uma sessão de superusuário, portanto, para scripts de shell, você pode escrever algo como:
psql -t -P format=unaligned -c 'show hba_file';
e definir as variáveis de ambiente PGUSER
, PGDATABASE
etc para garantir que a conexão é certo.
Sim, isso é um problema de galinha e ovo, pois se o usuário não puder se conectar (digamos, depois de estragar a edição pg_hba.conf
), você não poderá encontrar pg_hba.conf
para corrigi-lo.
Outra opção é examinar a ps
saída do comando e ver se o argumento do diretório de dados postmaster -D
está visível lá, por exemplo
ps aux | grep 'postgres *-D'
desde pg_hba.conf
que esteja dentro do diretório de dados (a menos que você esteja no Debian / Ubuntu ou em algum derivado e use seus pacotes).
Se você está direcionado especificamente para sistemas Ubuntu com o PostgreSQL instalado a partir de pacotes Debian / Ubuntu, fica um pouco mais fácil. Você não tem que lidar com mão-de-compilado-source Pg que alguém da initdb
'da datadir no seu diretório home, ou um Pg EnterpriseDB instalar em / opt, etc. Você pode perguntar pg_wrapper
, o Debian / Ubuntu multi-versão Pg gerente, onde PostgreSQL está usando o pg_lsclusters
comando de pg_wrapper
.
Se você não conseguir se conectar (a página não está sendo executada ou você precisa editar pg_hba.conf
para se conectar), será necessário procurar pg_hba.conf
arquivos no sistema . No Mac e Linux, algo como o sudo find / -type f -name pg_hba.conf
fará. Em seguida, verifique o PG_VERSION
arquivo no mesmo diretório para garantir que seja a versão correta do PostgreSQL, se você tiver mais de um. (Se pg_hba.conf
estiver em /etc
/, ignore isso, é o nome do diretório pai). Se você tiver mais de um diretório de dados para a mesma versão do PostgreSQL, precisará analisar o tamanho do banco de dados, verifique a linha de comando dos postgres em execução ps
para ver se o -D
argumento do diretório de dados corresponde ao local onde você está editando etc.