dbeaver普通用户返回connect reset问题
问题现象
单子:dbeaver连接sys用户是成功的,但连接其他用户显示失败。
如下图,sys账户可以连接到数据库,其它账户报错connect reset。
问题的风险及影响
影响:用jdbc连接服务端,只能用sys超级账户连接,不是3字节的用户,连接服务端都会报错。
风险:普通用户连接失败,用sys用户做普通用户的操作,权限过大,可能导致不可预知的问题。
问题影响的版本
所有版本
问题发生的原因
yashan客户端数据包,到服务端的中间过程中,被拦截。
解决方法及规避方式
1、解决方案,客户那边单独放开这个迅雷p2p拦截规则
2、规避方案:用sys账户暂时做规避。
问题分析和处理过程
1、排除权限问题:
sys用户能连接上,怀疑是权限问题。查看权限,该用户已有dba权限。
2、排除dbeaver工具问题:
怀疑dbeaver工具问题,换最新的dbeaver版本,连接还是有问题
换开源dbeaver版本,连接也有问题。
3、排查网络通路问题
用yasql普通用户连接,连接正常;sys用户正常连接。
4、排除防火墙规则:
怀疑防火墙入站出站规则导致的问题,把服务器和客户端防火墙关闭,问题一样。
5、确认和jdbc连接用户、用户长度有关
dbeaver用的是jdbc连接,普通用户连接报connect reset。
用java编写了jdbc连接程序connjava测试,发现普通用户连接报connect reset。
用户长度是3字节和1字节时,连接通路是通的,不会报connect reset。
6、查看listen.log,发现报错中的user和连接的user不一样。
7、抓数据包,客户端发送用户名的包后,客户端和服务端连接断开,如下图:
代表客户端和服务端之间数据包被拦截。如此情况,需要客户那边来排查原因。
客户最终找到原因:
客户排查后,表示数据包被拦截是因为拦截迅雷p2p的规则,至于为何会拦截到yashandb的数据包,这个需要和定义该规则的公司沟通(深信服),暂未确认,原因未知。
经验总结
1、找不到问题突破口时,可以换条思路,证明问题是否在自己这里