之前本人mongdb一直裸跑,学到用户认证后决定给mongodb加个管理员用户,就是在system.admin.user中添加个用户。原程序中链接数据库部分使用的是mongoose来实现的 exports.Connection = mongoose.connect('mongodb://locahost:27017/db);(之前是裸跑所用没有用户名和密码直接就连上了) 可是我改为 exports.Connection = mongoose.connect('mongodb://root:123456[[[[[[[[[[[[[[[[[[[[[[[[[[[@locahost](/user/locahost)](/user/locahost)](/user/locahost)](/user/locahost)](/user/locahost)](/user/locahost)](/user/locahost)](/user/locahost)](/user/locahost)](/user/locahost)](/user/locahost)](/user/locahost)](/user/locahost)](/user/locahost)](/user/locahost)](/user/locahost)](/user/locahost)](/user/locahost)](/user/locahost)](/user/locahost)](/user/locahost)](/user/locahost)](/user/locahost)](/user/locahost)](/user/locahost)](/user/locahost)](/user/locahost):27017/db); 提示: MongoError: auth fails 百度后发现这个用户名密码不是db这个数据库的,所以认证失败
后来查阅mongoose API 发现open方法中好像有auth参数 又改成 var db = exports.Connection = mongoose.createConnection(); var options = { db:{native_parser:true}, server:{poolSize:5}, auth:{ user:"root", pass:123456 } } db.open(settings.host, settings.db, settings.port, options); 结果还是无法向db数据库中操作数据 最后问题是,我的管理员账户是在system.admin.User中,如何认证通过?通过后又如何操作其他数据库(本例中为db)中的数据? 在原生的mongodb中好像有db.auth(“root","123456”) 返回1就是认证通过,那么在mongoose中如何实现呢? 请教各位大牛们,谢谢!
mongoose 连接db的方式
mongoose.connect('mongodb://username:password@host:port/database?options...');
不过前提是,你这个用户有操作数据库的权限。 输入 ./mongo 进入控制台,切换到 指定的数据库
show users
{
"_id" : "test.liux",
"user" : "liux",
"db" : "test",
"roles" : [
{
"role" : "dbOwner",
"db" : "test"
}
]
}
db 的名字是test ,能够登陆的用户是 liux 不知道你的是否是这样。如果两项都满足,肯定能登陆成功的