本文介紹如何解決無法串連RDS的問題。
串連失敗的常見報錯
請根據現場情況與具體的報錯資訊,選擇對應的解決方案。
資料庫類型 | 錯誤資訊 | 報錯原因 | 解決辦法 |
MySQL或MariaDB |
| 網路互連問題。 |
更多資訊,請參見解決方案。 |
| 白名單設定問題。 | ||
| 使用者名稱或密碼錯誤。 | ||
| 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的 | |
SQL Server | 無法串連到XXX。Cannot connect to XXX。在與SQL Server建立串連時出現與網路相關的或特定於執行個體的錯誤。未找到或無法訪問伺服器。請驗證執行個體名稱是否正確並且 SQL Server 已配置為允許遠端連線。(provider: TCP Provider, error: 0 - 由於串連方在一段時間後沒有正確回覆或串連的主機沒有反應,串連嘗試失敗。)(Microsoft SQL Server,錯誤: 10060或258) | 網路互連問題。 |
更多資訊,請參見解決方案。 |
無法串連到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? | 網路互連問題。 |
更多資訊,請參見解決方案。 |
| 白名單設定問題。 | ||
FATAL: remaining connection slots are reserved for non-replication superuser connections | 串連數滿。 | ||
FATAL: password authentication failed for user "xxx". | 密碼錯誤。 | 重設密碼後重試。 重設密碼具體操作,請參見重設密碼。 | |
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 |
| ||
對不起,您暫時無法通過DMS訪問該執行個體。 | 您不是該執行個體的擁有者,該執行個體的擁有者並未向您授予登入許可權。 | ||
請檢查串連地址的正確性、網路暢通情況、白名單設定 | 該問題一般發生於自建的MySQL伺服器,問題原因可能是如下幾點:
|
更多資訊,請參見解決方案。 | |
max_user_connections | RDS資料庫的串連數滿。 | ||
因白名單問題無法登入資料庫 | RDS白名單中沒有添加DMS服務的IP位址區段。 |
ECS執行個體無法通過內網訪問RDS執行個體
通過RDS內網地址串連RDS執行個體前,需要先將ECS內網IP添加到RDS白名單。
說明如何添加白名單請參見設定白名單。
如果僅添加ECS外網IP地址到RDS白名單,則無法通過內網串連RDS。
ECS執行個體和RDS執行個體需要位於同一地區才能內網互連。可以是同一地區的相同或不同可用性區域。
請確保ECS執行個體和RDS執行個體處於同一個地區:
查看ECS執行個體所在地區。
查看RDS執行個體所在地區。
檢查網路類型
請確保ECS執行個體和RDS執行個體的網路類型相同(都是專用網路或都是傳統網路)。
查看ECS執行個體的網路類型。
查看RDS執行個體的網路類型。
如果一個是傳統網路,一個是專用網路,請參見以下方法進行處理:
ECS執行個體採用專用網路而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執行個體,如何申請外網地址請參見申請外網地址。這種方式的效能、安全性、穩定性較差。
如果ECS執行個體與RDS執行個體的網路類型都是專用網路,請確認它們位於同一個專用網路。
查看ECS執行個體的專用網路ID。
查看RDS執行個體的網路類型。
如果專用網路不同,請參見以下方法進行處理:
方法一(推薦):將RDS執行個體遷移到ECS執行個體所在的VPC。具體操作請參見切換Virtual Private Cloud和虛擬交換器。
方法二:在兩個VPC之間建立雲企業網。
方法三:ECS執行個體使用RDS執行個體的公網地址串連RDS執行個體。這種方式的效能、安全性、穩定性較差。
如果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