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')

异常完美解决

发布了83 篇原创文章 · 获赞 19 · 访问量 17万+

猜你喜欢

转载自blog.csdn.net/u013939918/article/details/77930546