我在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
这个问题真的很累,有没有人遇到过这个问题???
答案 0 :(得分:1)
您尚未指定authSource(对其进行身份验证的数据库)。因此,如果authSource
为admin
,则应在连接选项中指定。
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/