Introdução
Este fim de semana eu @battisti e o @asfelix tivemos um problema durante o processo de instalação do php com o postgres, depois de fazer todas as configurações o banco continuava a dar a seguinte mensagem de erro:
Permission denied Is the server running on host "localhost" and accepting TCP/IP connections on port 5432?
Arquivos de Configuração
O postgres possui basicamente 2 arquivos de configurações responsáveis pela conexão, eles são:
- postgresql.conf aqui você precisa definir que o seu banco de dados irá receber conexão através de TCP/IP, até a versão 7.9 do postgres esta configuração era feita assim:
tcpip_socket = true
A partir da versão 8 isso é feito assim:
listen_addresses = ‘*’ port = 5432 - pg_hba.conf este é o arquivo que define quem pode acessar o que e de qual forma: para permitir que qualquer IP possa acessar qualquer banco adicione esta linha no arquivo host all all 0.0.0.0 0.0.0.0 password Se quiser que apenas 1 IP específico possa acessar a máquina então host all all 200.200.200.200/32 password A palavra password define que para você acessar o banco tem que digitar a senha, existe a palavra trust que diz ao banco para nao pedir senha então tenha cuidado com este tipo de configuração
Após mexer nestes dois arquivos reinicie o banco. Para acessar o seu banco através do terminal use o comando: psql -h 200.200.200.200 -U postgres -d banco Fique atento aos firewall pois eles podem barrar a sua conexão com o banco, e mais uma dica para que a conexão possa ser estabelecida no CentOS é necessário desativar o SELinux, que por padrão na instalação fica ativado: vim /etc/sysconfig/selinux e configure o SELINUX=disabled
Exemplo de Conexão PHP para Teste
try { $db = new PDO("pgsql:host=localhost dbname=datacentro user=postgres password=data1234"); $sql = 'SELECT * FROM pessoa'; foreach ($db->query($sql) as $row) { print $row['cod'] . "\t"; print $row['nome'] . "\t"; } } catch (PDOException $e) { print $e->getMessage(); } die("fim"); |
Referência
http://www.cyberciti.biz/faq/postgresql-remote-access-or-connection/