Я пытаюсь подключиться к своему экземпляру Postgres по локальному IP-адресу, к которому я могу подключиться без проблем, используя psql -h localhost
команда. Однако, пытаясь запустить через рельсы, я получаю следующее:
$ 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?
Вот мой /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
Как мне убедиться, что Postgres может принимать входящие соединения от localhost, а также на выбранных внутренних IP-адресах?
Пожалуйста, попробуйте проверить эти два момента:
1) В файле /etc/postgresql/9.1/main/postgresql.conf
у вас должна быть эта строка:
listen_addresses = '*'
вместо того
listen_addresses = '127.0.0.1'
Вы можете проверить это с помощью команды netstat -tpln | grep 5432
. В выводе вы увидите что-то вроде:
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 1150/postgres
Если первый IP-адрес 0.0.0.0
, postgres прослушивает все интерфейсы, а это то, что вы хотите. Если вы увидите только в первом поле IP-адреса 127.0.0.1
, postgresql прослушивает только localhost
интерфейс.
2) Попробуйте проверить правила вашего брандмауэра через iptables -L -n
. В цепочке INPUT должно быть правило, разрешающее подключение к порту 5432 с IP-адреса сервера, на котором установлены рельсы. Вы можете добавить это правило с помощью команды: iptables -I INPUT -p tcp -s 10.80.85.130 --dport 5432 -j ACCEPT
Но думаю, проблема будет в пункте 1).
У меня была такая же проблема.
В моем случае по какой-то причине он использовал IPV6 Localhost.
Попробуйте это в своем pg_hba.conf:
host all all ::1/128 md5