在节点应用程序上使用 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 角色获得它。