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

2024-10-02 00:36:20 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我可以从shell和Compass工具连接到docker托管的MongoDB服务器。使用Python脚本以编程方式连接和插入新项的尝试失败,并出现Authentication Failed错误。在

脚本如下:

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:身份验证失败


Tags: docker用户namefromimport服务器脚本fields
1条回答
网友
1楼 · 发布于 2024-10-02 00:36:20

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

您需要添加?authSource=admin

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

相关问题 更多 >

    热门问题