Назад | Перейти на главную страницу

Настройка Postgres: невозможно удаленно подключиться к серверу Postgres

У меня проблема с получением postgres для приема соединений с другого моего сервера. Вот моя установка:

Вот мой /var/lib/pgsql/data/pg_hba.conf файл на app06:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                               trust
# IPv4 local connections:
host    all         all         10.55.129.30/32       trust
host    all         all         10.55.129.31/32       trust
host    all         all         0.0.0.0/0             trust
# IPv6 local connections:
host    all         all         ::1/128               trust

Это не совсем то, что я хочу (я бы хотел использовать LDAP), но, по крайней мере, он должен работать. Я хочу подключить 10.55.129.30 к 10.44.129.31. Первый host линия должна быть всем, что мне нужно. Третий host линия должна позволять соединение из любого места.

Теперь мы запускаем Postgres на app06

 $ /etc/init.d/postgres start
 $ /etc/init.d/postgres status

 pg_ctl: server is running (PID: 30091)
 /usr/bin/postgres "-D" "/var/lib/pgsql/data"

Выглядит хорошо...

Посмотрим на Netstat:

$ netstat -nlp | grep 5432
tcp        0      0 127.0.0.1:5432              0.0.0.0:*                   LISTEN      30091/postmaster    
unix  2      [ ACC ]     STREAM     LISTENING     16490154 30091/postmaster    /tmp/.s.PGSQL.5432

Хорошо ... Я думаю ... Не будучи системным администратором, я не могу точно сказать, что это означает, но похоже, что PID 30091 (постмастер процесса) имеет открытый порт 5432.

Посмотрим, прослушивает ли что-нибудь порт 5432

$ telnet localhost 5432
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.

Хорошо, порт 5432 открыт и принимает соединения.

Теперь перейдем к APP05 и посмотрим, сможем ли мы подключиться ...

Я уже пробовал бежать psql из app05 безуспешно. Могу я поговорить с app06?

$ ping app06

PING app06 (10.55.129.31) 56(84) bytes of data.
64 bytes from app06 (10.55.129.31): icmp_seq=1 ttl=64 time=0.901 ms
64 bytes from app06 (10.55.129.31): icmp_seq=2 ttl=64 time=0.230 ms

--- app06 ping statistics ---
2 packets transmitted, 6 received, 0% packet loss, time 5001ms

Хорошо, я могу поговорить с app06 из app05. Посмотрим, смогу ли я подключиться к порту Postgres:

$ telnet app06 5432
Trying 10.55.129.31...
telnet: connect to address 10.55.129.31: Connection refused
telnet: Unable to connect to remote host: Connection refused

Я не могу подключиться к порту 5432

Я побежал /usr/sbin/lokkit и проверили, что программный брандмауэр выключен.

Я ни в коем случае не сетевой или системный администратор. Я тоже не администратор postgres. Очень возможно, что я пропустил какую-то простую, глупую вещь, но я не знаю что.

Я почти уверен, что порт 5432 на этих машинах открыт в сети. Я попытался переключить порт Postgres на 8999, который, я уверен, не заблокирован, но у меня такая же проблема.

Есть идеи, что я делаю неправильно?

Откройте postgresql.conf в текстовом редакторе и найдите listen_addresses ключевое слово. Установите это на *

Перезапустите pgsql.

Просто к вашему сведению ... один невероятно тупой все же я забыл удалить ведущую "#"в строке" listen_addresses "в файле конфигурации, когда я собирался его изменить. (Ага ... следовательно, строка [все еще] была комментарий! Ду-а-а-а.)

ответ очень прост, ваша установка postgresql привязана только к интерфейсу 127.0.0.1

tcp        0      0 127.0.0.1:5432              0.0.0.0:*                   LISTEN      30091/postmaster    

вам нужно перенастроить его и привязать к вашему сетевому интерфейсу / IP-адресу, и вы сможете получить доступ