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

上次更新日期:2022 年 6 月 20 日

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

簡短描述

無法連線至 Amazon RDS 資料庫執行個體,可能有多種根本原因。以下為幾個最常見的原因:

  • RDS 資料庫執行個體處於非可用的狀態,因此無法接受連線。
  • 於您的安全群組、網路存取控制清單 (ACL) 或本機防火牆中,授權存取資料庫執行個體的來源中缺少了您用來連接資料庫執行個體的來源。
  • 使用錯誤的 DNS 名稱或端點來連接至資料庫執行個體。
  • 多可用區域資料庫執行個體容錯移轉,而次要資料庫執行個體使用不允許入站連線的子網路或路由表。
  • 由於下列其中一個原因,使用者身分驗證不正確:
    • 您在資料庫層級使用不正確的使用者名稱或密碼,從資料庫用戶端存取執行個體。
    • 您並無存取執行個體所需的資料庫許可權限。
    • 用戶端執行的版本與資料庫版本不相容。

提示:您可使用下列疑難排解步驟來識別連線問題的來源。或者,您也可以使用 AWSSupport-TroubleshootConnectivityToRDS AWS Systems Manager Automation 文件,為您診斷問題。此自動化文件可以根據 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體的主要 IP 地址診斷網路 ACL,但不會驗證暫時性連接埠。自動化文件還會根據 EC2 執行個體的主要 IP 地址檢查安全群組,但該自動化不會檢查特定連接埠。如需詳細資訊,請參閱 執行簡單的自動化工作流程

解決方案

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

若您最近啟動了或重新啟動資料庫執行個體,請確認資料庫執行個體在 Amazon RDS 主控台 中處於可用狀態。視資料庫執行個體的大小而定,資料庫執行個體最多可能需要 20 分鐘才可用於網路連線。

若您的資料庫執行個體處於故障狀態,請參閱 為什麼我的 Amazon RDS 資料庫執行個體處於故障狀態?

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

請確定來自連線至資料庫執行個體的來源流量不受下列其中一或多項所控制:

  • 與資料庫執行個體相關聯的任何 Amazon Virtual Private Cloud (Amazon VPC) 安全群組。 如有必要,請將規則新增至與 VPC 關聯的安全群組,以允許與來源相關的流量進出資料庫執行個體。您可指定 IP 地址、IP 地址的範圍或其他 VPC 安全群組。如需 VPC 和資料庫執行執行個體的一般資訊,請參閱在 VPC 中存取資料庫執行個體的案例
  • 與資料庫執行個體相關聯的任何資料庫安全群組。 若資料庫執行個體不在 VPC 中,則執行個體可能正在使用資料庫安全群組來限制流量。更新您的資料庫安全群組,以允許來自您用來連線的 IP 地址範圍、Amazon EC2 安全群組EC2 Classic 執行個體的流量。
  • VPC 外部的連線。 確保資料庫執行個體可公開存取,且與公有子網路相關聯 (例如,路由表允許從網際網路閘道存取)。如需詳細資訊,請參閱在 VPC 中存取資料庫執行個體的案例
    若您的資料庫執行個體位於私有子網路中,請務必使用 VPC 對等互連或 AWS Site-to-Site VPN 安全地連線至執行個體。使用 Site-to-Site VPN,您可設定客戶閘道,其可讓您將 VPC 連線至遠端網路。您可於來源 VPC 和執行個體的 VPC 之間建立對等連線,以從 VPC 外部存取執行個體,來使用 VPC 對等互連。您還可使用 Amazon EC2 執行個體做為堡壘 (jump) 主機
  • 網路 ACL。 網路 ACL 可作為 VPC 中特定子網路之資源的防火牆。若您在 VPC 中使用 ACL,則請確保其輸入和輸出規則允許流量進出資料庫執行個體。
  • 網路或本機防火牆。 請洽詢您的網路管理員以判斷您的網路是否允許資料庫執行個體用於輸入和輸出通訊的流量進出連接埠。
    注意:Amazon RDS 不接受網際網路控制訊息協定 (ICMP) 流量,包括 ping。

對潛在 DNS 名稱或端點問題進行疑難排解

連線至資料庫執行個體時,您使用 Amazon RDS 主控台提供的 DNS 名稱 (端點)。請確保您使用正確的端點,並以正確的格式向用於連接到資料庫執行個體的用戶端提供端點。如需資料庫引擎連線教學課程清單,其中包含如何在各種用戶端應用程式中尋找和正確使用端點的指示,請參閱 Amazon RDS 入門

例如,從 VPC 中的 Amazon EC2 執行個體使用 nslookup 至資料庫執行個體端點:

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

疑難排解資料庫層級問題

  • 請確定您使用正確的使用者名稱和密碼,從資料庫用戶端存取執行個體。
  • 請確定使用者具有連線至資料庫執行個體的資料庫許可權限。
  • 檢查 RDS 中的任何資源調節,例如 CPU 或記憶體爭用。此種爭用可能會造成與執行個體建立較新的連線時發生問題。
  • 請確定執行個體尚未達到最大連線限制。

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

建立異地同步備份部署時,您可於不同的可用區域中啟動多個副本資料庫執行個體,以提高應用程式的容錯能力。確保與每個資料庫執行個體關聯的子網路與您相同或相似的路由表相關聯。若您的主要資料庫執行個體容錯移轉至備用複本,且備用複本與不同的路由表相關聯,則先前路由至資料庫執行個體的流量可能無法再度正確地進行路由傳送。

如需如何設定路由表的相關資訊,請參閱設定路由表。如需異地同步備份部署的其他資訊,請參閱異地同步備份部署以實現高可用性

注意:若您可連線至資料庫執行個體,但出現身分驗證錯誤,請參閱如何重設 Amazon RDS 資料庫執行個體的主使用者密碼?

驗證連線能力

透過執行以下其中一種命令來驗證您的連線:

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

telnetnc 命令成功,則會建立網路連線。這意味著問題很可能是由使用者對資料庫的身份驗證 (例如使用者名稱和密碼) 所致。