在节点应用程序上使用 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”