Configurando o arquivo pg_hba.conf para permitir o acesso de outros servidores ao banco de dados

15

Eu tenho um banco de dados postgres em um servidor e preciso acessá-lo de outro servidor.

Preciso editar o arquivo pg_hba.conf, mas agora tenho uma idéia de quais são as etapas para editar este arquivo. Server Centos

Preciso adicionar a seguinte linha no arquivo

host    all         all         10.0.2.12         255.255.255.255   trust

Eu localizei em var/lib/pgsql/data/

Agora, basicamente, não tenho certeza de quais são as etapas corretas para fazer isso

Elitmiar
fonte

Respostas:

14

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

pyhimys
fonte
1
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

listen_addresses = '*'

O Postgresql, por padrão, escuta no host local

user16233
fonte
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.
vfclists