MongoDB服务器托管在一个码头容器中。使用用户名和密码创建具有超级用户登录权限的超级用户。使用pymodm从Python连接到MongoDB服务器。
我能够从shell和Compass工具连接到承载在码头上的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:身份验证失败
发布于 2018-10-19 12:16:36
mongo_uri = "mongodb://monadmin:" + urllib.parse.quote("myPassword@123") + "@192.168.x.x:27017/Test?authSource=admin
您需要添加?authSource=admin
对于我使用的mongo映像,它包含一个名为admin的数据库。要使用admin数据库进行身份验证,必须通过将authSource部件添加到uri中,告诉命令对此进行身份验证。
https://stackoverflow.com/questions/52741957
复制相似问题