Primeiro, faça uma cópia de backup do pg_hba.conf fornecido
sudo tar cvf /var/tmp/mybackup_pg_hba_conf.tar /var/lib/pgsql/data/pg_hba.conf
Dessa forma, você terá a versão mais antiga pronta se estragar. Uma boa característica do arquivo tar é que preserva permissões e diretórios. Então, quando o pg_hba.conf está quebrado além do reconhecimento. Você pode:
cd /
sudo tar xvf /var/tmp/mybackup_pg_hba_conf.tar
Isso restaurará o backup pg_hba.conf do arquivo que você criou anteriormente.
Quanto à inserção real da linha:
sudo su -c 'echo "host all all 10.0.2.12 255.255.255.255 trust" >> /var/lib/pgsql/data/pg_hba.conf'
(NOTA: Comando editado. Obrigado bortzmeyer!)
Deveria fazê-lo. Note que isto apenas acrescenta a linha no pg_hba.conf. Se você precisar alterá-lo, precisará usar um editor real. Como vi. Sua curva de aprendizado pode ser um pouco íngreme, mas depois de aprender pelo menos o básico, você deve estar bastante seguro na maioria dos ambientes unix que encontrar.
Agora que estou de volta aos trilhos, você deve tentar reiniciar o banco de dados postgresql. Em uma máquina Centos, acredito que isso seja feito por:
sudo service postgresql restart
ou você pode simplesmente recarregar a configuração sem reiniciar:
su - postgres
pg_ctl reload
Agora você deve conseguir acessar o banco de dados postrgresql do Centos-machines a partir de 10.0.2.12
O sudo no último comando não funcionará, pois a operação privilegiada é feita por um redirecionamento, que é tratado pelo shell, não pelo programa que você executa com o sudo (echo, neste caso).
bortzmeyer 11/09/09
Bom ponto! Ele deve ser escrito como sudo "echo 'host todos todos 10.0.2.12 255.255.255.255 confiança' >> /var/lib/pgsql/data/pg_hba.conf"
Pyhimys
A maneira ideal seria colocá-lo sob controle de versão em um local de administrador e implantá-lo após alterá-lo via SSH etc.
vfclists
1
O local padrão do arquivo pg_hba.conf é um pouco diferente no 9.4: /var/lib/pgsql/9.4/data/pg_hba.conf.
Sergey Vlasov
13
Não se esqueça de editar o postgresql.conf e alterar / adicionar linha
Seu exemplo de list_addresses não é muito permissivo? Essa é uma brecha na segurança se o servidor executar em vários IPs, ou seja, público, interno, VPN etc.
Não se esqueça de editar o postgresql.conf e alterar / adicionar linha
listen_addresses = '*'
O Postgresql, por padrão, escuta no host local
fonte