mongoose无法连接授权的数据库

时间:2017-01-18 10:51:05

标签: node.js mongodb express

我在ubuntu 16.04上安装了mongodb 3.4.1并将它们托管在数字海洋上。

我当地的mongo客户端是mongochef 4.5.2

起初,我没有设置我的应用程序的授权,它被黑了,并被要求比特币作为赎金。 所以我试着设置授权。但是,在 /etc/mongo.conf 中设置authorization: enable后,遇到了有线问题。它无法使用mongoose远程和本地连接数据库,并且错误 auth failed 。但它可以与终端和mongoChef连接。

这是我与mongoose的联系

global.db=mongoose.connect('mongodb://admin:admin123@ip:27017/nodedb');

我也试过

var options = {
 user : "admin",
 pass : “admin123",
 auth : {authMechanism: 'MONGODB-CR'}
} global.db = mongoose.connect('mongodb://@ip:27017/test',options);

并且在本地更改了ip和本地的127.0.0.1,但失败了。

以防本地主机和127.0.0.1无法识别。还可以使用以下命令在/ etc / hosts中设置配置:

127.0.0.1 localhost 127.0.0.1 computename

更新〜:

我的管理员资料库中有两个用户。一个是root用户。另一个是管理员密码admin123,它验证了DB nodedb

这个问题真的很累,有没有人遇到过这个问题???

2 个答案:

答案 0 :(得分:1)

您尚未指定authSource(对其进行身份验证的数据库)。因此,如果authSourceadmin,则应在连接选项中指定。

options = {
    "auth": {
        "authSource": "admin"
    },
    "user": "apiuser",
    "pass": "admin123"
};

// If host=localhost, port=27017 and database name=nodedb
mongoose.connect('mongodb://localhost:27017/nodedb', options);

答案 1 :(得分:0)

身份验证在数据库级别完成。在您的连接字符串中,db是nodedb,但您的密码存储在admin数据库中。您可以通过向此db添加用户或使用--authenticationDatabase admin为auth定义db来连接到nodedb。你可以在这里阅读更多。 有关详细信息,请查看手册http://docs.mongodb.org/manual/reference/privilege-documents/