云小课|RDS 实例连接又失败?看我祭出杀手锏!
摘要:自从购买了 RDS 实例,连接失败的问题就伴随着我,我真是太难了。不要害怕,不要着急,跟着小云妹,读了本文,让你风里雨里,实例连接自此畅通无阻! 顺着以下几个方面进行排查,问题就可以迎刃而解~
本文分享自华为云社区《【云小课】【第17课】RDS实例连接又失败?看我祭出杀手锏!》,原文作者:数据库的小云妹 。
小 A:我的实例连接失败了,但就是找不出原因
小 B:我的实例刚还行,怎么忽然就连不上了
小 C:我的……
自从购买了 RDS 实例,连接失败的问题就伴随着我,我真是太难了。不要害怕,不要着急,跟着小云妹,读了本文,让你风里雨里,实例连接自此畅通无阻!
顺着以下几个方面进行排查,问题就可以迎刃而解~
1. 排除数据库实例异常
关系型数据库系统故障,实例状态异常,实例或表被锁定都可能会导致实例异常,可以尝试实例重启功能解决。
2. 使用正确的客户端连接方式
建议安装不低于数据库实例版本的引擎客户端。
3. 使用正确的 SSL 方式安全连接
(推荐)SSL 方式:实例连接管理页面的 SSL 开关开启,并且上传证书到 ECS。
mysql -h 172.16.0.31 -P 3306 -u root -p --ssl-ca=/tmp/ca.pem
普通方式:实例基本信息页面的 SSL 开关关闭。
mysql -h 172.16.0.31 -P 3306 -u root -p
4. 排除连接命令错误
包括连接地址、端口参数配置、用户名和密码、SSL 方式错误,请正确配置参数项,并重试连接实例。
SSL 内网连接 MySQL 示例:mysql -h 172.16.0.31 -P 3306 -u root -p --ssl-ca=/tmp/ca.pem
连接地址
目标实例的“连接管理”页面,“内网连接”页签的“内网地址”。
数据库端口
目标实例的“连接管理”页面,“内网连接”页签的“数据库端口”。
用户名和密码
root 管理员帐号及其对应的密码。
证书名称
SSL 证书文件名,该文件需放在执行该命令的路径下。
SSL 公网连接 MySQL 示例:mysql -h 公网地址 -P 3306 -u root -p --ssl-ca=/tmp/ca.pem
连接地址
目标实例的“连接管理”页面,“公网连接”页签的“弹性公网 IP”。
数据库端口
目标实例的“连接管理”页面,“公网连接”页签的“数据库端口”。
用户名和密码
root 管理员帐号及其对应的密码。
证书名称
SSL 证书文件名,该文件需放在执行该命令的路径下。
5. 排除网络不通
内网访问
1).检查 ECS 与 RDS 是否在同一个区域,VPC。
不同区域的云服务之间内网互不相通,无法访问实例。请就近选择靠近您业务的区域,可减少网络时延,提高访问速度。
不同 VPC 下,支持将 ECS 的虚拟私有云切换为与 RDS 实例一致,或使用 VPC 对等连接,为两个不同的虚拟私有云建立对等连接,实现内网互通。
2).检查安全组规则。
安全组外访问安全组内的 RDS 实例时,需要为安全组添加相应的入方向规则。
3).在 ECS 上测试是否可以正常连接到 RDS 实例地址的端口。
telnet <连接地址> <端口号>
公网访问
1).检查安全组规则。
安全组外访问安全组内的 RDS 实例时,需要为安全组添加相应的入方向规则。
2).检查网络 ACL 规则。
进入虚拟私有云网络 ACL 列表,确认 EIP 绑定的网卡在网络 ACL 关联的子网下,并查看网络 ACL 状态。如果为“开启”,需要添加 ICMP 放通规则进行流量放通。
3).相同区域主机进行 ping 测试。
如果在原 ECS 上没有 ping 通 RDS 实例绑定的 EIP,请在相同区域的另一台 ECS 上去 ping 该 EIP,如果可以正常 ping 通,说明虚拟网络正常。
6. 排除实例的连接数满的情况
1).查看实例的连接数指标是否已达上限。
2).请及时排查业务侧连接是否有效,优化实例连接,释放不必要的连接。
3).云监控服务目前可以监控数据库 CPU、内存、磁盘、连接数等指标,并且设置告警策略,出现告警时可以提前识别风险。
7. 连接失败的常见报错
ERROR 2013:Lost connection to MySQL server during query
连接超时参数“wait_timeout”和“interactive_timeout”设置过小时,MySQL 会自动断开超时的空连接。具体请参见 MySQL 客户端连接实例后会自动断开。
ERROR 1045 (28000): Access denied for user ‘root'@‘192.168.0.30' (using password:YES)
排除是否密码错误问题,确认该主机是否有连接数据库实例的权限,以及 MySQL 客户端和实例 VIP 是否可以连通,具体请参见连接 RDS 实例失败的常见报错。
ERROR 1226 (42000):User‘test' has exceeded the‘max_user_connections' resource (current value:10)
排查是否限制了实例的连接数,导致连接失败,具体请参见连接 RDS 实例失败的常见报错。
ERROR 1129 (HY000): Host ‘192.168.0.111' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
排查是否由于 MySQL 客户端连接数据库的失败次数(不包括密码错误),超过了 max_connection_errors 的值,导致连接失败,具体请参见连接 RDS 实例失败的常见报错。
[Warning] Access denied for user 'username'@'yourIp' (using password: NO)
连接 MySQL 和 PostgreSQL 实例时出现该报错,请检查用户名或密码是否正确。
[Warning] Access denied for user 'username'@'yourIp' (using password: YES)
连接 MySQL 和 PostgreSQL 实例时出现该报错,请检查用户名或密码是否正确。
Login failed for user 'username'
连接 SQL Server 实例时出现该报错,请检查用户名或密码是否正确。
云数据库 RDS 不但支持客户端方式连实例,还对接了 DAS 服务,使用 DAS 可视化界面连接并管理数据库,安全又简单。
赶紧戳这里,了解详情吧~~
版权声明: 本文为 InfoQ 作者【华为云开发者社区】的原创文章。
原文链接:【http://xie.infoq.cn/article/dfcbab1a56d7b5077008e96b2】。文章转载请联系作者。
评论