【pymongo】连接认证authfailed解决方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【pymongo】连接认证authfailed解决⽅法
故事背景:
我在虚拟机(ip:192.168.xx.xx)上建⽴了⼀个mongo的数据库,⾥⾯已经存好了内容。

⾥⾯的⼀个database叫做 "adb", ⾥⾯有个collection, 叫做"acol"
我打开了mongo的认证功能,并且把⽤户"userA"授予了访问"adb"的权限。

然后,我⽤下⾯的⽅式连接
import pymongo
host = '192.168.xx.xx'
conn = pymongo.MongoReplicaSetClient('mongodb://%s:%s@%s' % ("userA", "password", host))
db = conn["adb"]
collect = db["acol"]
结果报错:
pymongo.errors.OperationFailure: command SON([('authenticate', 1), ('user', u''), ('nonce', u''), ('key', u'')]) on namespace admin.$cmd failed: auth failed
然后,各种纠结。

后来看了官⽹,终于找到了解决⽅法。

1.查看pymongo版本: 结果为3.2
pip list -v
2.查看mongoDB版本:结果为2.6
在mongo终端中输⼊
db.version()
mongoDB有不同的认证机制,3.0版本以后采⽤的是'SCRAM-SHA-1', 之前的版本采⽤的是'MONGODB-CR'。

所以,以我的版本情况,显然应该⽤'MONGODB-CR'
⽤下⾯的⽅法连接,就成功了。

host = '192.168.xx.xx'
client = pymongo.MongoClient(host)
client.adb.authenticate("userA", "password", mechanism='MONGODB-CR')
db = client["adb"]
collection = db["acol"]。

相关文档
最新文档