Postgresql: соединение отказано. Убедитесь, что имя хоста и порт указаны правильно и что администратор почты принимает соединения TCP/IP

Я пытаюсь подключиться к postgresql, но получаю эту ошибку.

org.postgresql.util.PSQLException: Connection refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.

Мой файл pg_hba.conf такой.

 TYPE  DATABASE        USER            CIDR-ADDRESS            METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

Я был бы очень признателен, если бы кто-нибудь был настолько любезен, чтобы объяснить, что здесь происходит и как мне это исправить.

1 ответ

Решение

Ошибка, которую вы цитируете, не имеет ничего общего с pg_hba.conf; не удается подключиться, не удается авторизовать подключение.

Сделайте то, что говорит сообщение об ошибке:

Убедитесь, что имя хоста и порт указаны правильно и что администратор почты принимает соединения TCP/IP

Вы не показали команду, которая выдает ошибку. Предполагая, что вы подключаетесь к localhost порт 5432 (по умолчанию для стандартной установки PostgreSQL), затем либо:

  • PostgreSQL не работает

  • PostgreSQL не прослушивает соединения TCP/IP (listen_addresses в postgresql.conf)

  • PostgreSQL только слушает IPv4 (0.0.0.0 или же 127.0.0.1) и вы подключаетесь по IPv6 (::1) или наоборот. Это кажется проблемой для некоторых старых версий Mac OS X, которые имеют странное поведение сокетов IPv6, и для некоторых старых версий Windows.

  • PostgreSQL прослушивает порт, отличный от того, к которому вы подключаетесь

  • (вряд ли) есть iptables правила блокировки петлевых соединений

(Если вы не подключаетесь к localhostЭто также может быть сетевой брандмауэр, который блокирует соединения TCP/IP, но я предполагаю, что вы используете значения по умолчанию, поскольку вы этого не сказали).

Итак... проверьте это:

  • ps -f -u postgres должен перечислить postgres процессы

  • sudo lsof -n -u postgres |grep LISTEN или же sudo netstat -ltnp | grep postgres должен показывать адреса TCP/IP и порты, которые прослушивает PostgreSQL

Кстати, я думаю, что вы должны быть на старой версии. На моей установке 9.3 ошибка более детальная:

$ psql -h localhost -p 12345
psql: could not connect to server: Connection refused
        Is the server running on host "localhost" (::1) and accepting
        TCP/IP connections on port 12345?
Другие вопросы по тегам