【pymongo】链接认证 auth failed解决方法

故事背景:

我在虚拟机(ip:192.168.xx.xx)上创建了一个mongo的数据库,里面已经存好了内容。里面的一个database叫作 "adb", 里面有个collection, 叫作"acol"html

我打开了mongo的认证功能,而且把用户"userA"授予了访问"adb"的权限。python

 

而后,我用下面的方式链接mongodb

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 failedapi

 

而后,各类纠结。后来看了官网,终于找到了解决方法。spa

http://api.mongodb.org/python/current/examples/authentication.htmlcode

1.查看pymongo版本: 结果为3.2htm

pip list -v

2.查看mongoDB版本: 结果为2.6blog

在mongo终端中输入ip

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"]
相关文章
相关标签/搜索