ECS通过内网连接不上RDS For MySQL

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
私网连接 PrivateLink,5万GB流量 1.5万小时实例时长
简介: ECS通过内网连接不上RDS For MySQL

问题原因

ECS通过内网连接不上RDS For MySQL


回答

ECS和RDS内网连接条件

  • 相同地域
  • 相同网络类型,如果是VPC,需要在相同的VPC下
  • ECS内网IP在RDS白名单中。注意,如果RDS开启了高安全白名单模式,RDS是VPC环境,需要将ECS内网IP加到RDS白名单专有网络分组,否则加到经典网络分组

1、数据库连接信息

从RDS控制台获取数据库外网连接地址端口账号,与配置的连接地址、端口、账号是否一致。另外,需要核实密码是否正确。

客户端/代码连接:可能需要核实地址和端口之间的间隔符号是否为半角冒号

命令行连接:参数(大P端口,小p密码)格式(小p和密码之间不能有空格、命令行最后不能有分号)是否正确

mysql -h地址 -P端口 -u账号 -p密码

2、RDS白名单

ECS内网IP是否在RDS白名单中,如果RDS开通了高安全白名单模式,那么专有网络RDS需要将ECS内网IP设置到白名单“专有网络”类型下,否则设置到“经典网络”类型下。如截图,

3、常见错误信息

数据库连接常见错误:

报错信息

原因

  • ERROR 2003 (HY000): Can't connect to MySQL server on 'XXX'(10038或10060或110)
  • 无法连接到数据库:XXX

网络不通,一般是链接条件不满足

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

白名单设置错误

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

用户名或密码错误

  • 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

DNS解析问题,将DNS修改为阿里云DNS服务器地址

223.5.5.5和223.6.6.6

4、pingtelnet

  • ping不通,大概率是被处罚了
  • telnet不通,ECS没有安装telnet、ECS防火墙\安全组有拦截、RDS端口填写错误,RDS端口不通


5、以上都没问题

  • 是否RDS的问题:DMS登录,成功的话,可以确认RDS是没有问题的。
  • 是否链路的问题:更换客户端登录,成功的话,可以确认非链路问题,应该是客户端\代码的问题。
  • 客户端\代码问题:重新安装客户端\更换客户端\检查代码配置和驱动版本等。


6、抓包
抓包进行分析
抓包步骤:

Windows(需要安装wireshark):

  1. 在Wireshark 界面中,选择 Capture -》 Interface ,选择对应连接云数据库的内网网卡后 > Option > 在 File 输入框中输入要保存的文件 1.cap,然后点击 start 开始抓包。
  2. 连接RDS,复现问题。
  3. 问题复现后,停止抓包。
  4. 分析报文。


Linux:

  1. 打开一个到ECS的ssh连接,并以root身份登录。
    在该窗口运行下列命令
    tcpdump -i any -s 0 host 实例的链接地址域名  -C 200 -W 10 -w /tmp/error_get.pcap

       #200M一个包, 一共10个包 循环,遇到异常stop

  1. 连接RDS, 复现问题。
  2. 使用 ctrl + c 终止窗口1 的 tcpdump 命令。
  3. 分析报文。
相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7月前
|
存储 关系型数据库 MySQL
MySQL数据库进阶第三篇(MySQL性能优化)
MySQL数据库进阶第三篇(MySQL性能优化)
|
2月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
205 2
|
4月前
|
存储 SQL 关系型数据库
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
MySQL如何进行分库分表、数据迁移?从相关概念、使用场景、拆分方式、分表字段选择、数据一致性校验等角度阐述MySQL数据库的分库分表方案。
581 15
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
|
3月前
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
118 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
3月前
|
Java 关系型数据库 MySQL
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
这篇文章是关于如何使用Spring Boot框架通过JdbcTemplate操作MySQL数据库的教程。
145 0
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
|
3月前
|
弹性计算 JSON 关系型数据库
使用ROS模板基于ECS和RDS创建WordPress环境
使用ROS模板基于ECS和RDS创建WordPress环境
|
3月前
|
数据可视化 关系型数据库 MySQL
【IDEA】配置mysql环境并创建mysql数据库
【IDEA】配置mysql环境并创建mysql数据库
317 0
|
5月前
|
SQL 关系型数据库 MySQL
MySql⭐一、配置MySql数据库,并创建一个表单
MySql⭐一、配置MySql数据库,并创建一个表单
|
6月前
|
开发框架 前端开发 关系型数据库
ABP框架使用Mysql数据库,以及基于SQLServer创建Mysql数据库的架构和数据
ABP框架使用Mysql数据库,以及基于SQLServer创建Mysql数据库的架构和数据
|
7月前
|
关系型数据库 MySQL 数据库
【MySQL】MySQL数据库的delete from table和truncate table之间的区别
【MySQL】MySQL数据库的delete from table和truncate table之间的区别
796 1