У меня проблема с получением 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-адресу, и вы сможете получить доступ