Amazon EC2 和 PostgreSQL:由于超时错误无法连接

Amazon EC2 and PostgreSQL: cannot connect due to time out error

我想我在问这里之前遵循了任何可能的指南。

我正在尝试远程连接到安装在 EC2 Linux 实例上的 PostgreSQL 数据库(Ubuntu 服务器 18.04,如果重要的话是免费套餐)。

以下是我在碰壁和求助之前所做的所有步骤。

  1. 我通过 SSH 连接到我的实例
  2. 我在 this docs
  3. 之后下载并安装了 postgres
  4. 我创建了一个新的二手 (umberto)
  5. 我创建了一个新数据库(wondermap)
  6. 我创建了一个新的 OS 用户,其名称与步骤 3 (umberto) 中的名称相同
  7. 我用我的新用户从服务器连接到我的新数据库,一切都很好
  8. 我编辑了 /etc/postgresql/10/main/pg_hba.conf 添加了这些行:

    host all all 0.0.0.0/0 md5

    host all all ::/0 md5

  9. 我编辑了 /etc/postgresql/10/main/postgresql.conf#listen_addresses = 'localhost' 更改为 listen_addresses = '*'

  10. 我用 sudo service postgresql restart

  11. 重新启动了 postgres 服务器
  12. 我在实例安全组中添加了一个新的入站规则,如下所示:

    TCP port:5432 source:0.0.0.0/0, ::/0

毕竟,我正在尝试从我的本地机器连接(使用 pgadmin3 或 psql),但我仍然收到超时错误(主机被隐藏):

psql -h <PUBLIC-IP-OF-MY-INSTANCE> -U umberto -d wondermap

or even

psql -h <PUBLIC-IP-OF-MY-INSTANCE> -U postgres

psql: could not connect to server: Connection timed out
    Is the server running on host "<PUBLIC-IP-OF-MY-INSTANCE>" and accepting

执行 SELECT version(); 显示:

PostgreSQL 10.7 (Ubuntu 10.7-0ubuntu0.18.04.1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0, 64-bit

可能是什么问题?

显然,我仍然不得不在服务器的防火墙上解锁 postgres 端口。

  1. sudo ufw allow 5432/tcp

成功了!