当mongodb开启用户认证后(auth=true),如何使用mongoose链接数据库
发布于 6个月前 作者 perny 1031 次浏览

之前本人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中如何实现呢? 请教各位大牛们,谢谢!

1 回复

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 不知道你的是否是这样。如果两项都满足,肯定能登陆成功的

回到顶部