При попытке подключиться из клиента PostgreSQL на хост-системе к серверу PostgreSQL на гостевой системе VirtualBox появляется сообщение «Попытка подключения не удалась».
Хост-система — Windows XP. Я использую VirtualBox 3.1.2. Гостевая система — Ubuntu 9.10 Karmic Koala с PostgreSQL 8.4.
Я перенаправил порт 5432 в VirtualBox, как описано в руководстве, иэта почта. Когда я запускаю vboxmanage getextradata vmname enumerate
, я получаю эти записи (среди прочих):
Key: VBoxInternal/Devices/e1000/0/LUN#0/Config/pgsql/GuestPort, Value: 5432
Key: VBoxInternal/Devices/e1000/0/LUN#0/Config/pgsql/HostPort, Value: 5432
Key: VBoxInternal/Devices/e1000/0/LUN#0/Config/pgsql/Protocol, Value: TCP
Я настроил безопасность PostgreSQL в файле /etc/postgresql/8.4/main/pg_hba.conf с помощью следующих записей:
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all 192.168.1.0/24 md5
host all all 10.0.2.2/32 md5
Затем я перезагрузил PostgreSQL с помощью sudo /etc/init.d/postgresql-8.4 reload
.
Только для диагностических целей, Я отключил брандмауэр Windows и брандмауэр Ubuntu ( sudo ufw disable
).
Кто-нибудь знает, какие шаги я пропустил?
решение1
Хорошо, я нашел пропущенный шаг благодаряэта почта.
Я забыл установить параметр listen_addresses в postgresql.conf. Я использую это значение, но оно может быть более ограниченным:
listen_addresses = '*'
Для ясности: когда вы подключаетесь к PostgreSQL с хоста, используйте localhost в качестве сервера и 5432 в качестве порта. VirtualBox перенаправит этот порт в гостевую систему.
Я также понял, что некоторые настройки требуют перезапуска PostgreSQL вместо его простой перезагрузки. Команда:
sudo /etc/init.d/postgresql-8.4 restart