码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-01-13 19:12:35      阅读:901      评论:0      收藏:0      [点我收藏+]

标签:

故事背景:

我在虚拟机(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

 

然后,各种纠结。后来看了官网,终于找到了解决方法。

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

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"]

 

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

标签:

原文地址:http://www.cnblogs.com/dplearning/p/5127869.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!