本人整理了一下关于如何排查连接阿里云数据库的思路,请您参考:
文章适用于 RDS、Redis、Mongodb、Polardb等数据库。
第一步
分清楚是在外网登录数据库还是内网登录数据库(除Redis以外,其他数据库都可以通过外网连接),然后使用对应的链接地址。
(1) 如果ecs和数据库是处于同一种网络类型的,比方说同在一个地域的经典网络中或者同一个VPC中,那么ecs和数据库就能够通过内网地址登录;
(2) 否则都只能通过外网的方式进行登录。比如说经典网络的ecs访问VPC网络中的数据库;或者本地机器访问云数据库
第二步
由于安全性,连接阿里云数据库都需要添加相关的白名单。这一步是必不可少的。
但是这个第二步,对于当前的某些数据库由于更加严格的安全考虑,推出了高安全白名单模式。那么客户端的ip地址就需要添加到正确的分组中,比方说 RDS-Mysql就有高安全模式;如果是实例开启了这个模式,在添加白名单的时候需要识别:
经典网络分组:如果客户端是使用外网链接地址登录,那么客户端对应的公网ip就需要添加到这个分组中。
专有网络分组:如果客户端是使用内网链接地址登录,那么客户端对应的内网ip就需要添加到这个分组中。比方说和数据库同一个vpc下ecs的内网地址。
第三步
在做好了以上准备以后,那么就可以进行ping 和 telnet 的网络测试(云Hbase的链接地址是禁止ping的)。
ping 链接地址
telnet 链接地址 数据库端口
如果 telnet 出现下面的界面,那么说明是白名单也是添加成功的。请参考:
第四步
最后,使用对应的客户端进行链接数据库。对于Mysql来说可以使用Mysql命令行、Redis可以使用 redis-cli、Mongodb可以使用 mongo-shell。
Mysql命令行连接的时候加 -P
另外,有些客户端在进行连接的时候,如果不加 -P3306(如果端口是3306的话)连接rds-Mysql的话,会出现 "Can't connect to MySQL server on"
这个原因是由于客户端mysql的配置造成的(即使是没有配置mysql服务器,也会有这个情况),mysql客户端默认是会使用3306端口,但是对应的端口会按照下面的方法进行配置。
客户端上使用的端口的配置是从配置文件得到的,读取文件的顺序如下:https://dev.mysql.com/doc/refman/8.0/en/option-files.html