pymongo2.x版本认证mongoDB3.x版本认证失败问题分析

在这里插入图片描述

环境版本: mongoDB 3.6 pymongo 2.5

原因分析:
mongoDB 2.x的版本,是使用 MONGODB-CR的身份验证机制 ,mongoDB 3.0版本后,身份验证机制换成了SCRAM-SHA-1
而pymongo 2.5的版本默认使用的身份验证机制是MONGODB-CR,造成认证机制不统一认证失败。

代码追溯:
在这里插入图片描述
上面通过mongoDB账号密码认证
(上面是监控脚本中的代码块)
(下面是pymongo源代码)

在这里插入图片描述
mechanism默认使用的是 MONGODB-CR
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
pymongo2.5版本仅支持 MONGODB-CRGSSAPI 两种验证机制,而mongoDB3.6版本使用的验证机制是 SCRAM方式(根据版本不同可能使用 SCRAM-SHA-1或者 SCRAM-SHA-256

后具体在mongoDB官方文档中查询到一条:
在这里插入图片描述
pymongo3.9官方文档中查询到:
在这里插入图片描述
MONGODB-CR验证机制在mongoDB 3.6版本已弃用

原因总结:

mongoDB 3.6版本弃用 MONGODB-CR,而pymongo2.5仅支持 MONGODB-CRGSSAPI 两种验证机制,不支持mongoDB 3.6版本用的 SCRAM-SHA-1验证机制

版本不兼容,验证机制不同,经测试mongoDB 3.6 部分功能最低需要使用pymongo2.9版本及以上

最终解决办法:

用 venv 或其他虚拟环境工具搭建一个环境,监控脚本使用虚拟环境中pymongo的高版本对mongoDB的兼容,这样可以不限制生产环境mongoDB版本,减少版本兼容问题引发代码异常带来的业务风险。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值