在节点应用程序上使用 mongoose 的远程 mongo 身份验证问题
remote mongo authentication issue using mongoose on a node app
尝试获取节点通行证-mongo使用身份验证连接到远程 mongodb。
当使用以下方式关闭远程 mongodb 身份验证时,节点应用程序连接工作正常:
module.exports = {
'url' : 'mongodb://pubip:27017/test'
};
启用远程 mongo 身份验证 - 然后我可以从本地 shell 成功登录:
mongo pubip:27017/test -u dave -p password
但如果我随后将节点应用程序中的 database.js 配置更新为:
module.exports = {
'url' : 'mongodb://dave:password@pubip:27017/test'
};
我明白了:
/home/ubuntu/semblent/passport/node_modules/mongoose/node_modules/mongodb/lib/server.js:228
process.nextTick(函数() { 抛出错误; })
^
错误
在 Error.MongoError (/home/ubuntu/semblent/passport/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/error.js:13:17)
在 Server.destroy (/home/ubuntu/semblent/passport/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:629:47)
在 Server.close (/home/ubuntu/semblent/passport/node_modules/mongoose/node_modules/mongodb/lib/server.js:344:17)
在 Db.close (/home/ubuntu/semblent/passport/node_modules/mongoose/node_modules/mongodb/lib/db.js:267:19)
在 /home/ubuntu/semblent/passport/node_modules/mongoose/node_modules/mongodb/lib/db.js:196:12
在空。 (/home/ubuntu/semblent/passport/node_modules/mongoose/node_modules/mongodb/lib/server.js:226:9)
在 g (events.js:180:16)
在 EventEmitter.emit (events.js:98:17)
在空。 (/home/ubuntu/semblent/passport/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:238:68)
在 g (events.js:180:16)
感谢任何提示!!
我的坏...
似乎我没有正确设置我的用户定义 - 这个有效:
db.createUser(
{
user: "benny",
pwd: "butter",
roles: [
{ "role" : "dbAdmin", db: "test" },
{ "role" : "userAdmin", db: "test"},
{ "role" : "readWrite", "db" : "test" }
]
}
)
我之前缺少 readWrite 角色 - 我错误地认为您可以通过 dbAdmin 或 userAdmin 角色获得它。
尝试获取节点通行证-mongo使用身份验证连接到远程 mongodb。
当使用以下方式关闭远程 mongodb 身份验证时,节点应用程序连接工作正常:
module.exports = { 'url' : 'mongodb://pubip:27017/test' };
启用远程 mongo 身份验证 - 然后我可以从本地 shell 成功登录:
mongo pubip:27017/test -u dave -p password
但如果我随后将节点应用程序中的 database.js 配置更新为:
module.exports = { 'url' : 'mongodb://dave:password@pubip:27017/test' };
我明白了:
/home/ubuntu/semblent/passport/node_modules/mongoose/node_modules/mongodb/lib/server.js:228 process.nextTick(函数() { 抛出错误; }) ^ 错误 在 Error.MongoError (/home/ubuntu/semblent/passport/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/error.js:13:17) 在 Server.destroy (/home/ubuntu/semblent/passport/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:629:47) 在 Server.close (/home/ubuntu/semblent/passport/node_modules/mongoose/node_modules/mongodb/lib/server.js:344:17) 在 Db.close (/home/ubuntu/semblent/passport/node_modules/mongoose/node_modules/mongodb/lib/db.js:267:19) 在 /home/ubuntu/semblent/passport/node_modules/mongoose/node_modules/mongodb/lib/db.js:196:12 在空。 (/home/ubuntu/semblent/passport/node_modules/mongoose/node_modules/mongodb/lib/server.js:226:9) 在 g (events.js:180:16) 在 EventEmitter.emit (events.js:98:17) 在空。 (/home/ubuntu/semblent/passport/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:238:68) 在 g (events.js:180:16)
感谢任何提示!!
我的坏... 似乎我没有正确设置我的用户定义 - 这个有效:
db.createUser(
{
user: "benny",
pwd: "butter",
roles: [
{ "role" : "dbAdmin", db: "test" },
{ "role" : "userAdmin", db: "test"},
{ "role" : "readWrite", "db" : "test" }
]
}
)
我之前缺少 readWrite 角色 - 我错误地认为您可以通过 dbAdmin 或 userAdmin 角色获得它。