我已按照here的说法在我的MongoDB中设置了auth。最初,在我的项目中,我使用
从mongoose访问单个数据库,firstdb
let url = "mongodb://localhost:27017/firstdb";
let options = {
server:{
socketOptions:{
keepAlive:120
}
},
user:"username1",
pass:"mypassword1"
};
mongoose.connect(url,options,callback);
username
和mypassword
的用户已在firstdb
内创建了readWrite
个烫发。我在使用管理员用户登录时这样做了。
事情进展顺利。然后我需要连接到第二个数据库。所以我改变了我的代码
let url1 = "mongodb://localhost:27017/firstdb";
let options1 = {
server:{
socketOptions:{
keepAlive:120
}
},
user:"username1",
pass:"mypassword1",
auth:{
authdb:"firstdb"
}
};
let connection1 = mongoose.createConnection(url1,options1);
let url2 = "mongodb://localhost:27017/seconddb";
let options2 = {
server:{
socketOptions:{
keepAlive:120
}
},
user:"username2",
pass:"mypassword2",
auth:{
authdb:"seconddb"
}
};
let connection2 = mongoose.createConnection(url2,options2);
这次我在username2
数据库中以相同的方式创建了用户seconddb
。但是现在mongoose无法执行任何操作,并且Not authorized to execute command
失败了。我可以通过mongo shell访问数据库。我还在我的本地系统中启动了代码,该系统没有启用mongodb auth,它在那里工作正常。请帮忙
答案 0 :(得分:0)
所以,在盲人拍摄后,找到了有效的东西。 使用网址中的用户名和密码,如
let connection1 = mongoose.createConnection("mongodb://username1:password1@localhost:27017/firstdb");
尽管如此,我想知道为什么传递参数作为选项并不起作用。