【pymongo】連接認證 auth failed解決方法


故事背景:

我在虛擬機(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"]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM