如何在連線至我的 Amazon RDS 資料庫執行個體時解決問題?

2 分的閱讀內容
0

我無法連線到 Amazon Relational Database Service (Amazon RDS) 資料庫執行個體。

簡短說明

以下是封鎖您與 Amazon RDS 資料庫執行個體的連線的最常見原因:

  • Amazon RDS 資料庫執行個體處於可用以外的狀態,因此無法接受連線。
  • 連線到資料庫執行個體的來源沒有安全群組、網路存取控制清單 (ACL) 或本機防火牆中的授權存取權。
  • 您正在使用錯誤的 DNS 名稱或端點連線到資料庫執行個體。
  • 多可用區資料庫執行個體容錯移轉,而次要資料庫執行個體使用不允許傳入連線的子網路或路由表。
  • 使用者驗證不正確。

解決方法

使用下列一種或多種方法來疑難排解連線問題。

使用自動化執行手冊

使用 AWSSupport-TroubleshootConnectivityToRDS AWS Systems Manager Automation 文件為您診斷問題。

此自動化文件可根據 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體的主要 IP 位址來診斷網路 ACL。但是,暫時連接埠未經驗證。自動化文件也會根據 Amazon EC2 執行個體的主要 IP 位址來檢查安全群組,但該自動化不會檢查特定連接埠。如需詳細資訊,請參閱執行 Systems Manager Automation 支援的自動化作業

如需有關如何執行執行手冊以及其檢查內容的詳細資訊,請參閱 AWSSupport-TroubleshootConnectivityToRDS

自動化完成時,請檢閱輸出區段以取得詳細結果。如果執行手冊無法識別問題,接下來請繼續執行下列手動步驟。

確定您的資料庫執行個體處於可用狀態

如果您最近啟動或重新啟動了資料庫執行個體,請在 Amazon RDS 主控台中確認資料庫執行個體處於可用狀態。視資料庫執行個體的大小而定,資料庫執行個體可用於網路連線之前,最多可能會需要 20 分鐘的時間。如果您的資料庫執行個體處於失敗狀態,則請參閱為什麼我的 Amazon RDS 資料庫執行個體處於失敗狀態?

確認您的資料庫執行個體允許連線

請確定來自連線至資料庫執行個體的來源流量未遭到以下一個或多個組態要求:

  • **與資料庫執行個體相關聯的任何 Amazon Virtual Private Cloud (Amazon VPC) 安全群組。**請將規則新增至與 VPC 相關聯的安全群組,以允許與資料庫執行個體內外來源相關的流量。您可以指定 IP 位址、IP 位址範圍或另一個 VPC 安全群組。如需關於 VPC 和資料庫執行個體的一般資訊,請參閱在 VPC 中存取資料庫執行個體的案例
  • **任何與資料庫執行個體關聯的資料庫安全群組。**如果資料庫執行個體不在 VPC 中,則執行個體可能使用資料庫安全群組來控制流量。更新資料庫安全群組,以允許來自用於連線的 IP 位址範圍或 Amazon EC2 安全群組的流量。
  • **VPC 以外的連線。**請確定資料庫執行個體可公開存取,並且與公有子網路相關聯。例如,路由表允許從網際網路閘道存取。如需詳細資訊,請參閱在 VPC 中存取資料庫執行個體的案例
    針對私有子網路中的資料庫執行個體,請使用 VPC 對等或 AWS Site-to-Site VPN 安全連線到您的執行個體。使用站對站 VPN,您可以設定客戶閘道,以允許您將 VPC 連線到遠端網路。使用 VPC 對等在來源 VPC 與執行個體的 VPC 之間建立對等連線,以便從其 VPC 外部存取執行個體。也可以使用 Amazon EC2 執行個體作為堡壘 (跳躍) 託管
  • 網路 ACL。 網路 ACL 可作為在 VPC 特定子網路中資源的防火牆。針對 VPC 中的 ACL,請確保 ACL 具有允許傳入和傳出流量的規則以往返資料庫執行個體。
  • **網路或本機防火牆。**請詢問您的網路管理員,確認您的網路是否允許流量往返於連接埠,資料庫執行個體會使用該連接埠傳入和傳出通訊。
    **注意:**Amazon RDS 不接受網際網路控制訊息通訊協定 (ICMP) 流量,包括 ping。

潛在的 DNS 名稱或端點問題

當您連線到資料庫執行個體時,使用 Amazon RDS 主控台提供的 DNS 名稱 (端點)。請務必使用正確的端點。此外,請將端點以正確格式提供給用於連線到資料庫執行個體的用戶端。如需關於資料庫引擎連線以及如何在各種用戶端應用程式中使用端點的詳細資訊,請參閱開始使用 Amazon RDS

例如,使用 nslookup 檢視 VPC 內的 Amazon EC2 執行個體的資料庫執行個體端點。

nslookup myexampledb.xxxx.us-east-1.rds.amazonaws.com
Server: xx.xx.xx.xx
Address: xx.xx.xx.xx#53

非授權答案的範例:

Name: myexampledb.xxxx.us-east-1.rds.amazonaws.com
Address: 172.31.xx.x

資料庫層級問題

檢查下列資料庫層級設定是否已正確設定:

  • 您擁有正確的使用者名稱和密碼,可以從資料庫用戶端存取執行個體。
  • 使用者具有連線到資料庫執行個體的資料庫許可。
  • Amazon RDS 中沒有資源限流,例如 CPU 或記憶體爭用。記憶體爭用可能會導致建立較新的執行個體連線時出現問題。
  • 執行個體尚未達到 max_connections 限制。

檢查與執行個體相關聯的路由表

確保與每個資料庫執行個體相關聯的子網路都與相同或類似的路由表相關聯。如果您的主要資料庫執行個體容錯移轉至與不同路由表相關聯的待命複本,則流量可能無法正確路由。即使此流量之前路由時沒有問題,也仍可能無法再正確地路由。

如需詳細資訊,請參閱設定路由表。如需詳細資訊,請參閱設定和管理 Amazon RDS 的多可用區域部署

**注意:**如果您連線到資料庫執行個體卻出現錯誤,則請參閱如何重設 Amazon RDS 資料庫執行個體的主使用者密碼?

驗證您的連線

若要驗證連線,請執行下列其中一個命令:

telnet <RDS endpoint> <port number>
nc -zv <RDS endpoint> <port number>

telnetnc 命令測試用戶端和伺服器之間的連線。如果 telnetnc 命令成功,則表示已建立網路連線。這表示該問題是因為使用者對資料庫進行驗證而造成,例如使用者名稱和密碼。

相關資訊

無法連線至 Amazon RDS 資料庫執行個體

如何對使用 VPC 公有或私有子網路之 Amazon RDS 資料庫執行個體的連線問題進行疑難排解?

Amazon RDS 的安全性

使用 SSL/TLS 來加密資料庫執行個體或叢集的連線