2017-01-16 3 views
0

Я запускаю postgresql на Vagrant centos 7.2 box на macOS. Я подтвердил, что postgres запущен и запущен на коробке Vagrant на порту 5432, подключившись к ней, используя psql на самой коробке. Я пытаюсь направить порт 5432 на коробке Бродячей к порту 10001 на моей хост-машине следующим образом:Бродячий порт на MacOS?

config.vm.define "acc_db" do | acc_db | 
    acc_db.vm.box = "bento/centos-7.2" 
    acc_db.vm.hostname = "acc.db" 
    acc_db.vm.network :forwarded_port, guest: 5432, host: 10001 

    acc_db.vm.provision "shell", 
     inline: "yum upgrade -y -q --nogpgcheck" 

    acc_db.vm.provision "shell", 
     path: "install_postgres.sh" 

Я изменил мою pg_hba.conf связываться со всеми IP-адресами и разрешить аутентификацию по паролю, как показано ниже:

# TYPE DATABASE  USER   ADDRESS     METHOD 

# "local" is for Unix domain socket connections only 
local all    all          peer 
# IPv4 local connections: 
host all    all    0.0.0.0/0   md5 
# IPv6 local connections: 
host all    all    ::1/128     ident 

Я выключил брандмауэр, но я до сих пор не удается подключиться к Postgres на порт 10001 на хост-машине:

psql: could not connect to server: No such file or directory 
Is the server running locally and accepting 
connections on Unix domain socket "/tmp/.s.PGSQL.10001"? 

Как это исправить, так что портовые экспедиторские работы?

Я видел https://gielberkers.com/fixing-vagrant-port-forwarding-osx-yosemite/, но не пробовал, так как он касается касания файлов, с которыми я не знаком. Это правильный подход? Похоже, вы должны явно разрешить каждый порт, который хотите переслать через Vagrant.

ответ

1

...connections on Unix domain socket "/tmp/.s.PGSQL.10001" означает, что вы не пытаетесь подключиться к TCP/IP, поэтому переадресация портов не может произойти.

По умолчанию psql использует Unix domain sockets на unix-подобных операционных системах.

Используйте опцию -h psql, чтобы указать хост, предположительно 127.0.0.1 при использовании IPv4.


Кроме того, сервер PostgreSQL должен прослушивать сетевой интерфейс, к которому будет маршрутизироваться соединение. По соображениям безопасности он прослушивает только localhost.
Установка listen_addresses='*' в postgresql.conf позволяет прослушивать все существующие интерфейсы.

+0

Спасибо. Я поставил параметр -h в: 'psql -h 127.0.0.1 -p 10001 -u username', и я получаю' psql: сервер неожиданно закрыл соединение'. Я не вижу ошибок в журналах postgres. – user783836

+0

@ user783836: у вас есть 'listen_addresses = '*'' в 'postgresql.conf', чтобы он прослушивал все интерфейсы? –

+0

Блестящий! Это работает Спасибо! – user783836

Смежные вопросы