全部產品
Search
文件中心

ApsaraDB RDS:解決無法串連執行個體問題

更新時間:Nov 21, 2024

本文介紹如何解決無法串連RDS的問題。

串連失敗的常見報錯

請根據現場情況與具體的報錯資訊,選擇對應的解決方案。

資料庫類型

錯誤資訊

報錯原因

解決辦法

MySQL或MariaDB

  • ERROR 2003 (HY000): Can't connect to MySQL server on 'XXX'(10038或10060或110)

  • 無法串連到資料庫:XXX

網路互連問題。

  • 確保ECS執行個體和RDS執行個體處於同一個地區。

  • 確保ECS執行個體和RDS執行個體的網路類型相同。

  • 確保ECS和RDS執行個體在同一個專用網路中。

  • 檢查ECS執行個體的內網IP地址是否已添加到RDS執行個體的白名單。

更多資訊,請參見解決方案

  • ERROR 1045 (HY000): #28000ip not in whitelist

  • ERROR 2801 (HY000): #RDS00ip not in whitelist, client ip is XXX

  • ERROR 2013 (HY000): Lost connection to MySQL server at ‘reading authorization packet’, system error:110

白名單設定問題。

檢查執行個體白名單

  • ERROR 1045 (28000): Access denied for user ‘XXX’@’XXX’ (using password: YES或NO)

  • ERROR 1045 (28000): Authentication Failed For RDS maybe username or password is incorrect

使用者名稱或密碼錯誤。

檢查串連資訊中的使用者名稱和密碼

  • ERROR 2005 (HY000): Unknown MySQL server host ‘XXX’ (110或11004)

  • SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known

  • Name or service not known

  • unknown server host

DNS伺服器無法解析地址。

檢查串連地址或修改DNS伺服器位址

[Note] [MY-010914] [Server] Aborted connection 671541 to db: 'XXX' user: 'XXX' host: 'XXX' (The client was disconnected by the server because of inactivity.).

資料庫連接斷開。

由於用戶端長時間未發送任何請求,伺服器的互動逾時設定(如MySQL的`interactive_timeout``wait_timeout`)到期導致的。您可以檢查資料庫的配置,並根據需要調整這些逾時設定,以防止非預期的中斷連線。

SQL Server

無法串連到XXX。Cannot connect to XXX。在與SQL Server建立串連時出現與網路相關的或特定於執行個體的錯誤。未找到或無法訪問伺服器。請驗證執行個體名稱是否正確並且 SQL Server 已配置為允許遠端連線。(provider: TCP Provider, error: 0 - 由於串連方在一段時間後沒有正確回覆或串連的主機沒有反應,串連嘗試失敗。)(Microsoft SQL Server,錯誤: 10060或258)

網路互連問題。

  • 確保ECS執行個體和RDS執行個體處於同一個地區。

  • 確保ECS執行個體和RDS執行個體的網路類型相同。

  • 確保ECS和RDS執行個體在同一個專用網路中。

  • 檢查ECS執行個體的內網IP地址是否已添加到RDS執行個體的白名單。

  • 檢查ECS執行個體中配置的RDS內網地址和連接埠是否正確。

更多資訊,請參見解決方案

無法串連到XXX。Cannot connect to XXX。

已成功與伺服器建立串連,但是在登入過程中發生錯誤。(provider:TCP提供者,error:0-指定的網路名稱不再可用。)(Microsoft SQL Server,錯誤:64)

白名單設定問題。

檢查執行個體白名單

Logon failed for login 'user' due to trigger execution

串連數滿。

檢查執行個體串連數以及是否有阻塞

cannot open user default database.Login failed

刪除了帳號預設登入的庫,導致無法登入。

通過其他帳號登入資料庫並建立該帳號預設庫

PostgreSQL

Unable to connect to server:

could not connect to server: Connection timed out (0x0000274C/10060)Is the server running on host “XXX.rds.aliyuncs.com” and acceptingTCP/IP connections on port XXX?

網路互連問題。

  • 檢查ECS執行個體的內網IP地址是否已添加到RDS執行個體的白名單。

  • 檢查白名單是否配置錯誤。

  • 如果開啟了高安全白名單模式,檢查是否將白名單添加到了正確的分組。

更多資訊,請參見解決方案

  • server closed the connection unexpectedly This probably means the server terminated abnormally before or while processing the request.

  • Error connecting to the server: FATAL: no pg_hba.conf entry

白名單設定問題。

檢查執行個體白名單

FATAL: remaining connection slots are reserved for non-replication superuser connections

串連數滿。

關閉串連數進程

FATAL: password authentication failed for user "xxx".

密碼錯誤。

重設密碼後重試。

重設密碼具體操作,請參見重設密碼

通過DMS串連RDS資料庫

The user specified as a definer ('user'@'a.b.c.d') does not exist

登入所使用的帳號不存在,該問題僅發生在RDS資料庫代理模式(原高安全模式)下。

切換資料庫代理模式到標準模式

The MYSQL server is running with the --rds-deny-access option so it cannot execute this statement

  • RDS執行個體到期。

  • RDS執行個體的磁碟滿。

續約或升級執行個體儲存空間

對不起,您暫時無法通過DMS訪問該執行個體。

您不是該執行個體的擁有者,該執行個體的擁有者並未向您授予登入許可權。

授權阿里雲帳號

請檢查串連地址的正確性、網路暢通情況、白名單設定

該問題一般發生於自建的MySQL伺服器,問題原因可能是如下幾點:

  • ECS執行個體的防火牆限制或自建MySQL伺服器所在主機的防火牆限制。

  • ECS安全性群組未對DMS開放。

  • MySQL伺服器未啟動。

  • MySQL伺服器只允許root賬戶本地登入。

  • 檢查ECS或MySQL的防火牆規則。

  • 將DMS的IP加入到ECS安全性群組中。

  • 使用root賬戶登入MySQL。

更多資訊,請參見解決方案

max_user_connections

RDS資料庫的串連數滿。

解決RDS串連數被佔滿的問題

因白名單問題無法登入資料庫

RDS白名單中沒有添加DMS服務的IP位址區段。

添加DMS服務的IP位址區段

ECS執行個體無法通過內網訪問RDS執行個體

  • 通過RDS內網地址串連RDS執行個體前,需要先將ECS內網IP添加到RDS白名單。

    說明
    • 如何添加白名單請參見設定白名單

    • 如果僅添加ECS外網IP地址到RDS白名單,則無法通過內網串連RDS。

  • ECS執行個體和RDS執行個體需要位於同一地區才能內網互連。可以是同一地區的相同或不同可用性區域。

    • 請確保ECS執行個體和RDS執行個體處於同一個地區:

      1. 查看ECS執行個體所在地區。

      2. 查看RDS執行個體所在地區。

    • 如果ECS執行個體和RDS執行個體位於不同的地區,則無法直接通過內網互連,請參見以下方法進行處理:

      • 方法一:

        • 將ECS執行個體釋放,重新購買與RDS執行個體同一地區的執行個體。

        • 將RDS執行個體釋放,重新購買與ECS執行個體同一地區的執行個體。

      • 方法二:ECS執行個體使用RDS執行個體的公網串連地址串連RDS執行個體,如何申請外網地址請參見申請外網地址。這種方式的效能、安全性、穩定性較差。

檢查網路類型

  1. 請確保ECS執行個體和RDS執行個體的網路類型相同(都是專用網路或都是傳統網路)。

    • 查看ECS執行個體的網路類型。

    • 查看RDS執行個體的網路類型。

  2. 如果一個是傳統網路,一個是專用網路,請參見以下方法進行處理:

    • ECS執行個體採用專用網路而RDS執行個體採用傳統網路的情境:

      • 方法一(推薦):將RDS執行個體從傳統網路切換為專用網路(需要切換到待串連的ECS執行個體所在的VPC),具體操作請參見

        切換網路類型

      • 方法二:重新購買傳統網路的ECS執行個體。但是VPC比傳統網路更安全,建議您使用VPC。

        說明

        ECS執行個體不支援從VPC遷移到傳統網路。

      • 方法三:ECS執行個體使用RDS執行個體的公網地址串連RDS執行個體,如何申請外網地址請參見申請外網地址。這種方式的效能、安全性、穩定性較差。

    • ECS執行個體採用傳統網路而RDS執行個體採用專用網路的情境:

      • 方法一(推薦):將ECS執行個體從傳統網路遷移到待串連的RDS執行個體所在的VPC,可在RDS執行個體詳情頁網路類型右側單擊查看串連詳情查看RDS執行個體所在VPC ID。具體操作請參見單ECS遷移樣本

      • 方法二:將RDS執行個體從VPC切換為傳統網路。但是VPC比傳統網路更安全,建議您使用VPC。

      • 方法三:開通ClassicLink功能,使傳統網路的ECS執行個體可以和VPC中的RDS執行個體通過內網互連。

        說明

        若開通ClassicLink功能後網路不通,請參見建立ClassicLink串連後傳統網路和VPC網路不通的排查思路

      • 方法四:ECS執行個體使用RDS執行個體的公網地址串連RDS執行個體,如何申請外網地址請參見申請外網地址。這種方式的效能、安全性、穩定性較差。

  3. 如果ECS執行個體與RDS執行個體的網路類型都是專用網路,請確認它們位於同一個專用網路。

    • 查看ECS執行個體的專用網路ID。

    • 查看RDS執行個體的網路類型。

  4. 如果專用網路不同,請參見以下方法進行處理:

    • 方法一(推薦):將RDS執行個體遷移到ECS執行個體所在的VPC。具體操作請參見切換Virtual Private Cloud和虛擬交換器

    • 方法二:在兩個VPC之間建立雲企業網

    • 方法三:ECS執行個體使用RDS執行個體的公網地址串連RDS執行個體。這種方式的效能、安全性、穩定性較差。

  5. 如果ECS和RDS執行個體在同一個VPC和地區下,無法通過內網地址串連RDS執行個體(外網地址可以串連)、ping和telnet都失敗。請參見由於路由問題導致ECS無法串連RDS執行個體處理。

無法通過外網訪問RDS執行個體

確保串連RDS執行個體時使用的是RDS的外網地址。您可以在RDS控制台資料庫連接頁面查看RDS的外網地址。

確保已將正確的本地裝置公網IP地址添加到RDS的IP白名單。請在資料庫的白名單中臨時添加0.0.0.0/0,如果設定後可以正常訪問,說明是白名單設定存在問題。您可以通過以下方法擷取正確的本地裝置公網IP地址,並將該地址添加到白名單中。如何添加白名單請參見設定白名單

說明

外網IP可能發生變化,例如外網IP是動態,變化後導致無法串連。如需保持穩定串連,建議使用內網串連並添加內網IP到白名單。

相關文檔

適用於

  • 雲資料庫RDS