pymongo报错 pymongo.errors.OperationFailure: Authentication failed.

由于公司的mongoDB部署在容器平台

在本地测试 没有问题   项目部署于容器平台之后 报pymongo.errors.OperationFailure: Authentication failed.


之前有人遇到同样的问题 但是 导致认证失败的原因有多个    在stackoverflow上有类似方案 但是中文博客没有  导致 还是费了一番功夫


做过的尝试:

1.修改认证机制   因为MongoDB版本为  3.4.0  所以修改为  SCRAM-SHA-1

2.使用APIconnection .api.authenticate(name.psswd)

3.升级pymongo版本


终极解决方案:

1.将pymongo版本与MongoDB版本保持一致

2.使用以下代码模板

# --coding:utf-8--
import pymongo
from urllib import quote_plus
from pymongo import MongoClient
#/?replicaSet=rs0
uri = 'mongodb://mongo-0.mongo.public,mongo-1.mongo.public,mongo-2.mongo.public,mongo-3.mongo.public,mongo-4.mongo.public:27017/log_fieldmap'
clint=MongoClient(uri)
db = clint['log_fieldmap']
db.authenticate('
username, 'pwd')
coll = db['xxx.com']
result = coll.insert_one({"abc":123})
print result
clint.close()

异常原因:

在开启认证模式之后,如果将用户名密码写入url中  默认连接的数据库是admin,事实上我所连接的数据库并不是admin 所以  用户名和密码是无效的 所以导致认证失败

解决方案  在URL中指定所要连接的数据库  或者是 在  选择数据库之后 ( db = clint['log_fieldmap ']该代码之后  )  添加认证    db.authenticate('username, 'pwd')

异常完美解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值