使用认证数据库的mongoengine

时间:2016-11-06 01:06:26

标签: python mongodb mongoengine

我不确定如何连接到使用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指南中解释的地方:

Bill

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。如果记录得更好,那就太好了。

https://github.com/MongoEngine/mongoengine/pull/590/files

4 个答案:

答案 0 :(得分:5)

根据mongoengine connecting guideconnect()方法支持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")