在节点应用程序上使用 mongoose 的远程 mongo 身份验证问题

Posted

技术标签:

【中文标题】在节点应用程序上使用 mongoose 的远程 mongo 身份验证问题【英文标题】:remote mongo authentication issue using mongoose on a node app 【发布时间】:2015-06-04 20:54:51 【问题描述】:

试图让 node-passport-mongoose 使用身份验证连接到远程 mongodb。

使用以下命令关闭远程 mongodb 身份验证时,节点应用程序连接工作正常:

module.exports = 'url':'mongodb://pubip:27017/test' ;

启用远程 mongo 身份验证 - 然后我可以从本地 shell 成功登录:

mongo pubip:27017/test -u dave -p 密码

但如果我随后将节点应用程序中的 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(function() throw err; ) ^ 错误 在 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)

感谢任何提示!

【问题讨论】:

您使用的是什么 mongo shell 版本?什么 MongoDB 版本?什么版本的猫鼬? 嗨 - 在远程服务器上的 mongo shell 中运行 db.version() 我得到 3.0.1。查看我的 package.json,我看到我正在使用 "mongoose": "~4.0.1" 而我的本地 mongo shell 本地版本也是 3.0.1 【参考方案1】:

我的坏... 似乎我没有正确设置我的用户定义 - 这个有效:

db.createUser(
    
      user: "benny",
      pwd: "butter",
      roles: [
          "role" : "dbAdmin", db: "test" ,
          "role" : "userAdmin", db: "test",
          "role" : "readWrite", "db" : "test" 
      ]
    
) 

我之前错过了 readWrite 角色 - 我错误地认为您可以通过 dbAdmin 或 userAdmin 角色获得该角色。

【讨论】:

以上是关于在节点应用程序上使用 mongoose 的远程 mongo 身份验证问题的主要内容,如果未能解决你的问题,请参考以下文章

节点/快速应用程序无法使用mongoose连接到Mongodb Atlas

在节点 js 中使用 mongoose 连接到 MongoDB 后未显示数据

Mongoose 没有与 Namecheap 共享主机节点 js 应用上的数据库建立连接

无法通过节点休息应用程序上的mongoose连接到mongodb-altas,连接失败:“UnhandledPromiseRejectionWarning:错误:连接EACCES”

在递归节点函数中从 Mongoose 检索树数据

无法使用 mongoose 连接到 Mongodb Atlas