Networking

無法連接到公共 postgresql rds 實例

  • January 29, 2020

我在一個 VPC 中創建了一個基本的測試 PostgreSQL RDS 實例,該實例具有一個公共子網並且應該可以通過公共 Internet 進行連接。它使用預設安全組,該安全組對埠 5432 開放。當我嘗試連接時,它失敗了。我一定遺漏了一些非常簡單的東西——但我對此很迷茫。

這是數據庫設置,請注意它被標記為Publicly AccessibleRDS 設置

這是安全組設置,請注意它是完全開放的(在上面的 RDS 設置中由端點旁邊的綠色“授權”提示確認): 安全組設置

這是我試圖用來連接的命令:

psql --host=myinstance.xxxxxxxxxx.us-east-1.rds.amazonaws.com \
    --port=5432 
    --username=masteruser 
    --password 
    --dbname=testdb

這是我嘗試從 Yosemite MacBook Pro 連接時得到的結果(注意,它解析為 54.* ip 地址):

psql: could not connect to server: Operation timed out
   Is the server running on host "myinstance.xxxxxxxxxx.us-east-1.rds.amazonaws.com" (54.xxx.xxx.xxx) and accepting
   TCP/IP connections on port 5432?

我沒有啟用任何類型的防火牆,並且能夠連接到其他提供商(例如 Heroku)上的公共 PostgreSQL 實例。

任何故障排除技巧將不勝感激,因為我在這裡幾乎不知所措。

更新

根據評論,以下是預設 VPC 的入站 ACL 規則: 網路 ACL 配置

問題是安全組中的入站規則將安全組指定為源。將其更改為包含我的 IP 地址的 CIDR 可解決此問題。

在AWS中打開數據庫安全組;並選擇“編輯入站規則”;“添加規則”。下拉菜單中有“我的IP”選項;選擇該選項以使用 CIDR 表示法自動填充電腦的公共 IP 地址編輯安全組,編輯入站規則,添加規則,在“來源”欄中選擇“我的IP”選項

面臨類似的問題,這就是我解決它的方法:

點擊 RDS 實例的安全組並檢查入站規則。您可能會看到如下內容:

在此處輸入圖像描述

必須設置 IP 範圍以包含您的 IP,或者只需在 Source 下拉列表中選擇“Anywhere”,以使其可以從 localhost 或任何地方訪問:

在此處輸入圖像描述

引用自:https://serverfault.com/questions/656079