本地设备无法通过公网远程连接Redis的原因可能是使用了错误的连接地址,未将本地设备的公网IP添加到Redis白名单,未使用正确的账号密码等。本文介绍本地设备通过公网连接Redis的常见问题与解决办法。
本地设备公网连接问题排查流程图
步骤一:报错信息是否为invalid password
、WRONGPASS
、NOAUTH Authentication required
如果报错信息为connection timed out
或者无明确的报错信息,请跳过步骤一,直接查看步骤二。
报错说明
报错信息为invalid password
、WRONGPASS invalid username-password pair
或者NOAUTH Authentication required
,说明账号密码错误。
解决方法
使用
<user>:<password>
格式的密码重新连接。例如自定义账号为testaccount
,密码为Rp829dlwa
,密码需填写为testaccount:Rp829dlwa
。如果使用
<user>:<password>
格式的密码重新连接,仍然提示密码错误,可能是密码记错了,请重置密码后使用新密码连接。重置密码,请参见修改或重置密码。
步骤二:使用ping命令检测本地设备与Redis的网络是否连通
操作方法
在本地设备执行ping命令。
ping <host>
示例:ping r-bp1zx****.redis.rds.aliyuncs.com
结果说明
如果Ping通(如下所示),说明网络连通,可参考步骤三继续排查。
如果返回信息类似
0 packets received,100.0% packet loss
,说明网络未连通。请检查您使用的连接地址是否为实例的公网访问连接地址。
如果返回信息类似
Unknown host
或Name or service not known
,说明地址解析出现问题。请检查您使用的连接地址是否有拼写错误。
常见原因
使用了专有网络地址连接云数据库Redis实例。
本地设备连接云数据库Redis实例,需要使用公网访问地址。
连接地址拼写错误。
连接地址拼写错误或域名解析失败,导致无法解析出IP地址。
解决方法
在云数据库Redis控制台的实例信息页面连接信息区域,查看云数据库Redis实例的公网访问连接地址。复制公网访问的连接地址,重新执行ping命令。
重要如果控制台未显示公网访问的连接地址,请先申请连接地址。具体操作请参见申请公网连接地址。
云原生版集群架构直连模式实例不支持申请公网地址。
如果使用了公网访问连接地址且连接地址拼写正确,仍无法ping通,请检查是否域名解析失败,具体操作请参见解决因域名解析失败导致的连接问题。
步骤三:使用telnet命令检测服务端口是否可用
操作方法
在本地设备执行telnet命令。
telnet <host> <port>
示例:telnet r-bp1zx****.redis.rds.aliyuncs.com 6379
结果说明
如果返回Connected to ...
或显示telnet界面(如下所示),说明已建立连接。
如果实例为经典实例,telnet成功后,依然需要检查白名单,在白名单中的IP才能访问数据库,排查白名单的步骤,请参见步骤四:检查白名单。
如果显示Connection timed out或Connect failed,表示连接失败。
常见原因和解决方法
白名单配置错误或未配置白名单。具体请参见步骤四:检查白名单。
步骤四:检查白名单
白名单错误或未配置白名单是连接失败的常见原因。如果出现以下两种现象,建议您排查白名单。
域名可以ping通,但telnet失败。
如果您在本地设备使用redis-cli连接Redis公网地址,报错
(error) ERR illegal address
或(error) ERR client ip is not in whitelist
。
常见原因
白名单配置错误,即未将本地设备的公网IP配置到白名单中。
未配置白名单。
解决方法
查询本地设备的公网IP。
Linux操作系统:打开终端,输入
curl ifconfig.me
命令后回车。Windows操作系统:打开命令提示符,输入
curl ip.me
命令后回车。macOS操作系统:打开终端,输入
curl ifconfig.me
命令后回车。
将查到的公网IP添加到Redis白名单中。具体操作请参见设置白名单。