使用pymongo連接mongodb時報錯:pymongo.errors.OperationFailure: not authorized


連接本機或局域網部署的mongodb時可以用以下方法:

 1 from urllib import parse
 2 from pymongo import MongoClient
 3 
 4 host = '*.*.*.*'
 5 username = '*****'
 6 password = '****'
 7 passwd = parse.quote(password)  # 對密碼先進行編碼
 8 port = '3717'
 9  mongo_url = 'mongodb://{0}:{1}@{2}:{3}'.format(username, passwd, host, port)
10 clinet = MongoClient(mongo_url)

但連接集群部署的mongodb時,再用以上代碼連接,會報錯:pymongo.errors.OperationFailure: not authorized

因為mongoDB有不同的認證機制,3.0版本以后采用的是'SCRAM-SHA-1', 之前的版本采用的是'MONGODB-CR',所以首先需要查看自己連接的mongodb的版本號

需要更改連接方式,代碼如下:

from pymongo import MongoClient    
host = '**.**.**.**'
username = '*****'
password = '....'
port = '3717'
db = 'test'
mongo_url = 'mongodb://{0}:{1}@{2}:{3}/?authSource={4}&authMechanism=SCRAM-SHA-1'.format(username, password, host, port,db)
clinet = MongoClient(mongo_url)    
authMechanism參數根據自己的版本號,寫對應的值就可以了


免責聲明!

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



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