使用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,port,db)
clinet = MongoClient(mongo_url)    
authMechanism参数根据自己的版本号,写对应的值就可以了

相关文章

本文从多个角度分析了vi编辑器保存退出命令。我们介绍了保存...
Python中的回车和换行是计算机中文本处理中的两个重要概念,...
SQL Server启动不了错误1067是一种比较常见的故障,主要原因...
信息模块是一种可重复使用的、可编程的、可扩展的、可维护的...
本文从电脑配置、PyCharm版本、Java版本、配置文件以及程序冲...
本文主要从多个角度分析了安装SQL Server 2012时可能出现的错...