问题原因
本地通过外网连接不上RDS For MySQL
一、前提条件
1、RDS拥有外网地址
2、访问源外网IP在RDS白名单中
二、排查步骤
1、数据库连接信息
从RDS控制台获取数据库外网连接地址、端口、账号,与配置的连接地址、端口、账号是否一致。另外,需要核实密码是否正确。
客户端/代码连接:可能需要核实地址和端口之间的间隔符号是否为半角冒号
命令行连接:参数(大P端口,小p密码)和格式(小p和密码之间不能有空格、命令行最后不能有分号)是否正确
mysql -h地址 -P端口 -u账号 -p密码
2、RDS白名单
访问源外网IP是否在RDS白名单中,如果RDS开通了高安全白名单模式,那么本地IP需要设置到白名单“经典网络”类型下。如截图,
3、常见错误信息
数据库连接常见错误:
报错信息 |
原因 |
|
网络不通,一般是链接条件不满足 |
|
白名单设置错误 |
|
用户名或密码错误 |
|
DNS解析问题,将DNS修改为阿里云DNS服务器地址 223.5.5.5和223.6.6.6 |
4、抓包
抓包进行分析
抓包步骤:
Windows(需要安装wireshark):
- 在Wireshark 界面中,选择 Capture -》 Interface ,选择对应连接云数据库的内网网卡后 > Option > 在 File 输入框中输入要保存的文件 1.cap,然后点击 start 开始抓包。
- 连接RDS,复现问题。
- 问题复现后,停止抓包。
- 分析报文。
Linux:
- 打开一个到ECS的ssh连接,并以root身份登录。
在该窗口运行下列命令
tcpdump -i any -s 0 host 实例的链接地址域名 -C 200 -W 10 -w /tmp/error_get.pcap
#200M一个包, 一共10个包 循环,遇到异常stop
- 连接RDS, 复现问题。
- 使用 ctrl + c 终止窗口1 的 tcpdump 命令。
- 分析报文。