我在mongodb中有两个数据库(即test和admin)。管理员是默认数据库。我已经创建了一个管理员用户:
use admin
db.createUser(
{
user: "admin_1",
pwd: "admin1234",
roles: [
{
role: "dbOwner",
db: "test"
},
{
role: "userAdminAnyDatabase",
db: "admin"
}
]
}
)
我已经在测试数据库中创建了另一个用户:
{
role: "dbOwner",
db: "test"
}
我正在使用mongoengine和django DATABASES连接到mongodb,如下所示:
mongoengine.connect(
db=config.main_db,
host=config.host,
username=config.username_test,
password=config.password_test,
authentication_source=config.authSource_test
)
DATABASES = {
'default': {
'ENGINE': 'djongo',
'NAME': config.main_db,
'USER': config.username_test,
'PASSWORD': config.password_test,
}
}
这给我一个身份验证失败错误。
但是,当我在DATABASES中使用config.username_admin和config.password_admin时,效果很好。
我不明白为什么它失败了。有人可以解决这个问题吗?我已使用凭据保护了这些数据库,并遵循了this方法
我希望数据库应该使用“测试”凭据并可以工作,而不是“管理员”凭据。 另外,我想删除管理数据库中测试数据库上的dbOwner角色
我正在使用:mongodb:3.4,mongoengine:0.16,django 2.1和python3