не удается подключиться к PostgreSQL БД, запущенной на экземпляре EC2 - PullRequest
1 голос
/ 20 июня 2020

У меня есть простая PostgreSQL БД, работающая на экземпляре EC2.

ubuntu@ip-172-31-38-xx:~$ service postgresql status
● postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
   Active: active (exited) since Fri 2020-06-19 14:04:12 UTC; 7h ago
 Main PID: 11065 (code=exited, status=0/SUCCESS)
    Tasks: 0 (limit: 1152)
   CGroup: /system.slice/postgresql.service

Jun 19 14:04:12 ip-172-31-38-xx systemd[1]: Starting PostgreSQL RDBMS...
Jun 19 14:04:12 ip-172-31-38-xx systemd[1]: Started PostgreSQL RDBMS.
ubuntu@ip-172-31-38-xx:~$ psql -U postgres
Password for user postgres:
psql (10.12 (Ubuntu 10.12-0ubuntu0.18.04.1))
Type "help" for help.

postgres=# SELECT *
postgres-# FROM pg_settings
postgres-# WHERE name = 'port';
 name | setting | unit |                       category                       |                short_desc                | extra_desc |  context   | vartype |       source       | min_val | max_val | enumvals | boot_val | reset_val |               sourcefile                | sourceline | pending_restart
------+---------+------+------------------------------------------------------+------------------------------------------+------------+------------+---------+--------------------+---------+---------+----------+----------+-----------+-----------------------------------------+------------+-----------------
 port | 5432    |      | Connections and Authentication / Connection Settings | Sets the TCP port the server listens on. |            | postmaster | integer | configuration file | 1       | 65535   |          | 5432     | 5432      | /etc/postgresql/10/main/postgresql.conf |         63 | f
(1 row)

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

5432, TCP, 0.0.0.0/0

Но когда я использую клиента для подключения к этой БД с правильным именем хоста (publi c IP / DNS), номером порта, именем БД, именем пользователя и введенным паролем, он всегда говорит:

could not connect to server: Connection refused, is the server running on host "ec2-dns.com(172.public.ip)" and accepting TCP/IP connections on port 5432?

Ответы [ 2 ]

1 голос
/ 20 июня 2020

Хорошо, я понял это из этого ответа

Две вещи, которые я сделал, чтобы позволить себе подключиться (точно по ссылке выше, я дублирую ее здесь для удобство):

  1. открыть этот файл: sudo vi /etc/postgresql/10/main/pg_hba.conf

непосредственно под этой строкой:

host all all 127.0.0.1/32 md5

добавил это строка:

host all all 0.0.0.0/0 md5

откройте этот файл: sudo vi /etc/postgresql/10/main/postgresql.conf

найдите строку, которая начинается с этого: #listen_addresses = 'localhost'

Раскомментируйте строку, удалив #, и измените 'localhost' на '*'.

Теперь строка должна выглядеть так:

listen_addresses = '*' # what IP address(es) to listen on;.

, затем перезапустите службу:

sudo service postgresql restart

, тогда вы сможете подключиться к своей БД через клиент SQL.

0 голосов
/ 20 июня 2020

Вы уверены, что PostgreSQL прослушивает IP-адрес и номер порта, которые вы используете в качестве параметров хоста и порта. Попробуйте изменить файл postgresql .conf и перезапустить сервер.

   sudo nano /etc/postgresql/{YOUR_POSTGRES_VERSION}/main/postgresql.conf

Теперь go, найдите настройки подключения и обновите следующие значения.

   listen_addresses = {YOUR_IP_ADDRESS}
   port = {YOUR_PORT_NUMBER}

Сейчас сохраните файл и перезапустите сервер postgresl:

   sudo systemctl restart postgres

Документация по оформлению заказа здесь:

...