Невозможно подключиться к PostgreSQL с клиента - истекло время ожидания ошибки - PullRequest
0 голосов
/ 28 октября 2019

После многих дней, когда я пытаюсь подключиться к своему экземпляру PostgreSQL, я решил, что пришло время обратиться за помощью.

Я пытаюсь подключиться к моей базе данных PostgreSQL с компьютера с Windows.

Я пытаюсь использовать pgAdmin 4 и dBeaver, но оба они не могут подключиться. Ниже приведен скриншот ошибки, которую я получаю при подключении с использованием dBeaver.

enter image description here

Соединение, которое я создаю, выглядит примерно так:

enter image description here

Мои пользователи (\du):

                                 List of roles
 Role name |                         Attributes                         | Member of
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 umberto   | Superuser, Create role, Create DB                          | {}

Мои базы данных (\l):

                              List of databases
   Name    |  Owner   | Encoding | Collate |  Ctype  |   Access privileges
-----------+----------+----------+---------+---------+-----------------------
 postgres  | postgres | UTF8     | C.UTF-8 | C.UTF-8 |
 template0 | postgres | UTF8     | C.UTF-8 | C.UTF-8 | =c/postgres          +
           |          |          |         |         | postgres=CTc/postgres
 template1 | postgres | UTF8     | C.UTF-8 | C.UTF-8 | =c/postgres          +
           |          |          |         |         | postgres=CTc/postgres
 umberto   | umberto  | UTF8     | C.UTF-8 | C.UTF-8 |
 wondermap | postgres | UTF8     | C.UTF-8 | C.UTF-8 |

Не знаю точно, где искать журналы, чтобы копаться в этой проблеме на сервере. Единственной вещью, которую я смог найти, была папка /var/log/postgresql, в которой я вижу только два файла без gzip, но сообщения относятся к дням, предшествующим моим попыткам подключения.

Наконец, мой pg_hba.conf:

# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    all             all             0.0.0.0/0               md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
host    all             all             ::0/0                   md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            md5
host    replication     all             ::1/128                 md5
host    all             all             ::/0                    md5

В чем может быть проблема?

1 Ответ

1 голос
/ 28 октября 2019

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

По моему опыту, ошибка тайм-аута соединения обычно возникает из-за проблем с Windows / сетевыми подключениями, например, при включенном (или спереди) межсетевом экранеиз) сервер не разрешает доступ через порт 5432, или на самом деле ничего не прослушивается на порту 5432 (возможно, что postgres на самом деле не работает, или он настроен на прослушивание на другом порту и т. д.).

Мой любимый инструмент для устранения подобных проблем с подключением в Windows - portqry . Использование portqry -n [hostname] -e [port number]. Он попытается подключиться к [hostname] через порт [port number] и выдаст результаты:

  • Listening: portqry смог подключиться к хосту на указанном порту, и приложение былослушая этот порт. Это то, что вам нужно.
  • Not listening: portqry смог подключиться к хосту на указанном порту, но ничего не прослушивало этот порт. В случае postgres это может быть связано с тем, что служба не работает или прослушивает другой порт.
  • Filtered: portqry не удалось подключиться к хосту через указанный порт. Это означает, что он был фактически заблокирован от подключения, и это, как правило, вызвано брандмауэром на хосте или между клиентом и хостом, который препятствует доступу к хосту на этом порту.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...