尝试将Python连接到MongoDB时身份验证失败

时间:2019-08-22 15:30:04

标签: python mongodb

我是Python的新手,正在尝试连接到MongoDB ReplicaSet,但是当我尝试连接到数据库时,在“ for mydoc中的x”语句中出现以下错误:

  

第159行中的“ C:\ Users \ Nahuel Gabioud \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ pymongo \ helpers.py”文件在_check_command_response中提高OperationFailure(msg%errmsg,代码,响应)pymongo.errors.OperationFailure:身份验证失败。

代码如下

import pymongo
import urllib

password = urllib.parse.quote_plus("moica2$PerformanceGGR!!")
try: 
    myclient = pymongo.MongoClient("mongodb://performance:"+password+"@db-mdb-30.serverurl:27017,db-mdb-31.serverurl:27017,db-mdb-32.serverurl:27017/?authMechanism=SCRAM-SHA-256&replicaSet=rs30&readPreference=primaryPreferred")
    print("Connected successfully!!!") 
except:   
    print("Could not connect to MongoDB") 
mydb = myclient["moica2"]
mycol = mydb["moicaTickets"]

myquery = {"nroTkt": "190701PD0100"}

mydoc = mycol.find(myquery)

for x in mydoc:
  print(x)

input()

出于安全原因,我没有发布真实网址,而是使用“ serverurl”。

如您所见,我正在使用https://docs.mongodb.com/manual/reference/connection-string/#standard-connection-string-format

中的连接字符串

try和except未捕获异常。错误显示在“ for mydoc中的x”中。

2 个答案:

答案 0 :(得分:1)

身份验证失败会导致您认为ID /密码不正确。但是,如果您在公司防火墙后面,则可能是连接问题和错误消息。

我建议下载/安装Compass,并查看是否使用相同的连接字符串/凭据进行连接。

https://www.mongodb.com/products/compass

如果确实有效,我建议这一行

urllib.parse.quote_plus("moica2$PerformanceGGR!!")

正在做一些更改密码的操作,这就是失败的原因。

P.s。我会根据您的要求编辑密码!

答案 1 :(得分:1)

您必须这样提及:

client = MongoClient('X.X.X.X',port=27017,username='iamlogin', password='abcd',authSource='xyz_db')

您的用户名可访问数据库名称的authSource