2013-11-12 3 views
1

На консоли rails, когда я попытался подключиться к базе данных postgres, которая на машине с ip-адресом предположила xxx.xxx.xxx.xxx.DBI :: OperationalError: не удалось подключиться к серверу: Соединение было отклонено

Gem установлен

gem 'dbi' 
sudo apt-get install libpq-dev 
gem 'dbd-pg' 

Я также получил все разрешения на пользователь 'Postgres' и перезапустить сервер Postgres на этой машине ххх.ххх.ххх.хого

GRANT ALL PRIVILEGES ON DATABASE test TO postgres WITH GRANT OPTION 
sudo /etc/init.d/postgresql restart 

я получаю следующее сообщение об ошибке.

1.9.3p448 :001 > dbh = DBI.connect("DBI:Pg:test:xxx.xxx.xxx.xxx", "postgres", "")

DBI::OperationalError: could not connect to server: Connection refused Is the server running on host "xxx.xxx.xxx.xxx" and accepting TCP/IP connections on port 5432?

from /home/ashwini/.rvm/gems/ruby-1.9.3-p448/gems/dbd-pg-0.3.9/lib/dbd/pg/database.rb:82:in `rescue in initialize' 
from /home/ashwini/.rvm/gems/ruby-1.9.3-p448/gems/dbd-pg-0.3.9/lib/dbd/pg/database.rb:41:in `initialize' 
from /home/ashwini/.rvm/gems/ruby-1.9.3-p448/gems/dbd-pg-0.3.9/lib/dbd/Pg.rb:157:in `new' 
from /home/ashwini/.rvm/gems/ruby-1.9.3-p448/gems/dbd-pg-0.3.9/lib/dbd/Pg.rb:157:in `connect' 
from /home/ashwini/.rvm/gems/ruby-1.9.3-p448/gems/dbi-0.4.5/lib/dbi/handles/driver.rb:33:in `connect' 
from /home/ashwini/.rvm/gems/ruby-1.9.3-p448/gems/dbi-0.4.5/lib/dbi.rb:148:in `connect' 
from (irb):1 
from /home/ashwini/.rvm/gems/ruby-1.9.3-p448/gems/railties-3.1.1/lib/rails/commands/console.rb:45:in `start' 
from /home/ashwini/.rvm/gems/ruby-1.9.3-p448/gems/railties-3.1.1/lib/rails/commands/console.rb:8:in `start' 
from /home/ashwini/.rvm/gems/ruby-1.9.3-p448/gems/railties-3.1.1/lib/rails/commands.rb:40:in `<top (required)>' 
from script/rails:6:in `require' 
from script/rails:6:in `<main>' 

Пожалуйста, скажите мне, где я буду неправильно.

Спасибо ...

+0

Ну, вы проверили, что сообщение об ошибке было сообщено? В частности, часть 'on port 5432'? (Кстати, 8.3 устарел. Вам нужно запланировать обновление.) –

+0

Нет моих postgres обновлено..sry забыл удалить старую версию из команды – Ashwini

ответ

2

Connect с psql и запустить:

SHOW port; 

Betcha порт дается не 5432. Вероятно, вы тоже на маке; для пользователей Mac обычно используется несколько двоичных файлов, связанных с libpq, предоставленных операционной системой (старый PostgreSQL), а некоторые - libpq PostgreSQL, которые они установили сами. Они могут иметь разные каталоги сокетов по умолчанию и разные значения по умолчанию для TCP-порта.

Вы также должны:

SHOW listen_addresses ; 

и убедитесь, что это *. Если он вместо этого говорит localhost, то ваш PostgreSQL не прослушивает внешние IP-адреса, а только локальный loopback. В этом случае вы должны изменить это в файле конфигурации. См. Вступительную документацию PostgreSQL.

Если вы подтвердили, что PostgreSQL прослушивает IP-адрес и порт интереса, вы должны убедиться, что у вас нет блокировки брандмауэра от внешних устройств. Это, как правило, приводит к тайм-ауту, а не к отказу от отказа.

+0

Я использую Ubuntu 12.04 – Ashwini

+0

@Ashwini OK. Есть ли вероятность, что у вас установлено более одного PostgreSQL? Какой порт PostgreSQL вы хотите подключиться к работе? Слушает ли он IP-адрес назначения? Запустите 'SHOW listen_addresses;' –

+0

Фактически Postgres установлен на другой машине Ubuntu 12.04 (я также использую Ubuntu 12.04), и я пытаюсь подключиться к этой базе данных. Я не указывал номер порта. Это может быть порт по умолчанию, используемый postgres – Ashwini