gpt4 book ai didi

python - 使用pymodm连接MongoDB服务器的Python脚本中的身份验证失败错误

转载 作者:太空宇宙 更新时间:2023-11-04 09:38:18 30 4
gpt4 key购买 nike

MongoDB 服务器托管在 docker 容器中。创建了一个具有root权限的 super 用户,可以使用用户名和密码登录。使用 pymodm 从 Python 脚本连接到 MongoDB 服务器。

我能够从 shell 以及 Compass 工具连接到 docker 托管的 MongoDB 服务器。使用 Python 脚本以编程方式连接和插入新项目的尝试失败,并出现身份验证失败错误。

脚本如下:

from pymodm import connect
from pymodm import MongoModel, fields
import urllib.parse

class Dummy(MongoModel):
email = fields.EmailField(primary_key=True)
name = fields.CharField()

class Meta:
connection_alias = 'Mongo'

# Establish a connection to the database.
mongo_uri = "mongodb://monadmin:" + urllib.parse.quote("myPassword@123") + "@192.168.x.x:27017/Test"

# Establish a connection to the database.
def Connect2DB()
try:
#connect('mongodb://localhost:27017/PMOTest')
connect(mongo_uri, alias="Mongo")
print("db connection success")
return True
except:
print("db connection failed")
return False

def Insert_record():
try:
Dummy(email="hello@test.com", name="test").save()
print("save success")
except ex:
print("save failed")


if __name__ == "__main__":
if Connect2DB():
Insert_record()

连接成功但插入记录失败并出现以下错误:pymongo.errors.OperationFailure: Authentication failed

最佳答案

mongo_uri = "mongodb://monadmin:"+ urllib.parse.quote("myPassword@123") + "@192.168.x.x:27017/Test?authSource=admin

您需要添加?authSource=admin

对于我正在使用的 mongo docker 镜像,它包含一个名为 admin 的数据库。要使用管理数据库进行身份验证,您必须通过将 authSource 部分添加到您的 uri 来告诉命令对此进行身份验证。

关于python - 使用pymodm连接MongoDB服务器的Python脚本中的身份验证失败错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52741957/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com