Não é possível conectar-se ao Postgres em produção

2

Estou tentando conectar-me à minha instância do Postgres em um IP local, ao qual posso me conectar sem problemas usando o comando psql -h localhost . No entanto, que tentando executar via rails, eu recebo isso:

$ rails c production
/home/avishai/.rvm/gems/ruby-1.9.3-p125/gems/activerecord-3.2.9/lib/active_record/connection_adapters/postgresql_adapter.rb:1208:in 'initialize': could not connect to server: Connection refused (PG::Error)
    Is the server running on host "10.61.99.194" and accepting
    TCP/IP connections on port 5432?

Aqui está o meu /etc/postgresql/9.1/main/pg_hba.conf :

# DO NOT DISABLE!
# If you change this first entry you will need to make sure that the
# database superuser can access the database using some other method.
# Noninteractive access to all databases is required during automatic
# maintenance (custom daily cronjobs, replication, and similar tasks).
#
# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
host    all             all             10.80.85.130/32         trust
host    all             all             10.80.85.130/32         md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

Como posso ter certeza de que o Postgres pode aceitar conexões de entrada do host local, bem como selecionar IPs internos?

    
por Avishai 27.12.2012 / 20:36

2 respostas

4

Por favor, tente verificar estes dois pontos:

1) No arquivo /etc/postgresql/9.1/main/postgresql.conf você tem que ter esta linha:

listen_addresses = '*'

em vez de

listen_addresses = '127.0.0.1'

Você pode verificá-lo via comando netstat -tpln | grep 5432 . Você verá na saída algo como:

tcp  0  0  0.0.0.0:5432  0.0.0.0:* LISTEN 1150/postgres

Se o primeiro endereço IP for 0.0.0.0 , o postgres estará escutando em todas as interfaces, ou seja, o que você deseja. Se você vir apenas no campo do primeiro endereço IP 127.0.0.1 , o postgresql estará escutando somente na interface localhost .

2) Tente verificar suas regras de firewall via iptables -L -n . Na cadeia INPUT, deve haver uma regra aceitando a conexão à porta 5432 do endereço IP do servidor, onde estão sendo executados os trilhos. Você pode adicionar esta regra pelo comando: iptables -I INPUT -p tcp -s 10.80.85.130 --dport 5432 -j ACCEPT

Mas eu acho que esse problema estará no ponto 1).

    
por 27.12.2012 / 21:32
0

Eu tive esse mesmo problema.

No meu caso, ele estava usando o host local IPV6 por algum motivo.

Tente isso no seu pg_hba.conf:

host    all             all             ::1/128                 md5
    
por 29.05.2014 / 00:00