7

У меня есть сервер postgresql внутри виртуальной коробки, созданной vagrant.

Я также настроил переадресацию портов с 5432 внутри коробки до 15432 на хост-системе через файл Vagrant.

При подключении через psql

$ psql dbname username -h 127.0.0.1 -p 15432

psql: server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.

Сервер и клиент работают под управлением Ubuntu 12.04 (postgresql-9.1, версия: 9.1+129ubuntu1)

Подключение внутри виртуальной машины само по себе к порту 5432 работает нормально.

Само по себе переадресация порта, по-видимому, не происходит полностью неправильно, потому что, когда я пытаюсь подключиться к другому порту, я получаю сообщение "Отказано в соединении")

2 ответа2

7

Вы настраивали Postgres для прослушивания в открытом интерфейсе? По умолчанию он прослушивает только петлевой адаптер

Если вы используете поваренную книгу Postgres, вам нужно установить атрибут:

set['postgresql']['config']['listen_addresses'] = '*'

Это соответствует параметру listen_addresses в postgresql.conf

И, вероятно, откройте pg_hba для сети, в которой, как считает Postgres, будет установлено ваше соединение:

Опять же, атрибут Chef:

set['postgresql']['pg_hba'] = [
    {:type => 'local', :db => 'all', :user => 'all', :addr => nil, :method => 'trust'},
    {:type => 'host', :db => 'all', :user => 'all', :addr => '127.0.0.1/32', :method => 'trust'},
    {:type => 'host', :db => 'all', :user => 'all', :addr => '10.0.0.0/16', :method => 'trust'}
]
2

Используйте SSH туннелирование:

Выполните эту команду на хосте, чтобы сопоставить порт 5454 на хосте с портом 5432 (порт по умолчанию PostgreSQL) на гостевой машине VirtualBox. В этом примере предполагается, что вы уже настроили переадресацию портов для сопоставления порта 2222 хоста с портом гостевого SSH по умолчанию (порт 22).

ssh -p 2222 -f -L 5454:127.0.0.1:5432 dev@localhost -N
  • Порт хоста: 5454
  • Адрес хоста: 127.0.0.1
  • Гостевой порт: 5432
  • Гостевой аккаунт: dev
  • Гостевой сервер: localhost

После этого вы сможете установить соединение с гостевым сервером postgresql, используя localhost и порт 5454. Например,

psql -h localhost -p 5454 -U postgres

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .