我不确定如何连接到使用mongoengine的身份验证数据库的mongodb数据库。
在命令提示符下我需要做canvas.selectAll(".xContainer")
.selectAll("path")
.data(...)
.enter()
.append("path")
.attr("fill", function(element, index) { return colorForSize(element[4]); })
.attr("d", function(element, index) {
var arc = d3.arc()
.innerRadius(iR)
.outerRadius(iR + 10)
.startAngle(element[1])
.endAngle(element[2])
.cornerRadius(isRounded ? 8 : 0);
return arc();
});
,但是我没有看到我将这个作为mongoengine的参数传递给我,所以我使用admin数据库进行身份验证,但是连接到我的myApp数据库模型?
我相信这是在PyMongo指南中解释的地方:
mongo hostname:27017/myApp -u "test" -p "test" --authenticationDatabase admin
我找到了将此添加到mongoengine的拉取请求:
https://api.mongodb.com/python/current/examples/authentication.html
看起来您只需将>>> from pymongo import MongoClient
>>> client = MongoClient('example.com')
>>> db = client.the_database
>>> db.authenticate('user', 'password', source='source_database')
作为authentication_source
的参数添加为connect
。如果记录得更好,那就太好了。
答案 0 :(得分:5)
根据mongoengine connecting guide,connect()
方法支持URI样式连接。即
connect(
'project1'
host='mongodb://username:password@host1:port1/databaseName'
)
从这个意义上讲,您还可以指定身份验证源数据库,如下所示:
"mongodb://username:password@host1:port1/database?authSource=source_database"
有关更多MongoDB URI示例,另请参阅MongoDB connection string URI。 另外Authentication options through connection string
答案 1 :(得分:4)
API已更新,因此这是现在正确的方法:
connect('mydb',
host="localhost",
username="admin",
password="secret",
authentication_source='your_auth_db')
答案 2 :(得分:1)
建议的解决方案对我不起作用。什么工作: 只需像使用pymongo MongoClient方法一样向connect方法添加一个authSource参数。例如:
connect('database_name', host='host', username="username",
password="password",authSource='authentication_database_name')
答案 3 :(得分:0)
这是一个对我有用的简单解决方案。
connect(db="database_name", host="localhost", port=27017, username="username",
password="password", authentication_source="admin")