【发布时间】:2016-04-06 08:47:32
【问题描述】:
我无法在我的 arduino yun 上的 nodejs 上使用 mongodb 或 mongoose 连接到数据库。
Unable to connect to the mongoDB server. Error: { [MongoError: Authentication failed.]
name: 'MongoError',
message: 'Authentication failed.',
ok: 0,
code: 18,
errmsg: 'Authentication failed.' }
我得到了那个错误。 代码在我的台式计算机上运行良好。
//lets require/import the mongodb native drivers.
var mongodb = require('mongodb');
//We need to work with "MongoClient" interface in order to connect to a mongodb server.
var MongoClient = mongodb.MongoClient;
// Connection URL. This is where your mongodb server is running.
var url = 'mongodb://*******:********@address:23118/arduino';
// Use connect method to connect to the Server
MongoClient.connect(url, function (err, db) {
if (err) {
console.log('Unable to connect to the mongoDB server. Error:', err);
} else {
//HURRAY!! We are connected. :)
console.log('Connection established to', url);
// do some work here with the database.
//Close connection
db.close();
}
});
我正在尝试连接到 mongo 实验室数据库。我没有尝试连接到任何其他数据库进行故障排除。这是因为我找不到不需要信用卡的免费试用版。
编辑:
我有一个 Object Rocket 实例,它在我的 arduino yun 上完美运行。 但是它非常昂贵;每月 30 美元(目前正在试用中)。而且我不需要速度或大量数据。因此,如果有人能弄清楚为什么它在 mlab 上不起作用,那就太好了。
【问题讨论】:
-
这个错误很明显,因为提供的凭据与授权帐户不匹配。我的猜测是这里的
arduino数据库名称与您以前使用的不同,因此该用户对该特定数据库“未授权”。更正帐户以允许访问该数据库,或者改为为该数据库创建一个新帐户。这不是人们可以“帮助你”的事情。您需要修复凭据。 -
@NeilLunn 就是这样,但是完全相同的 URL 和代码在我的计算机上完美运行。
-
我打赌你不会。帐户或密码不一样,或者“很可能”URI 的“数据库”部分不同。授权发生在“每个数据库”而不是“全局”。尤其是没有 mongolab 帐户。除了指出这些问题来源之外,没有什么可以让人们在这里调试的。
-
我从我的电脑复制并粘贴了代码。现在看,没有任何区别。我会尝试建立一个新的数据库。
-
这里听起来像是破唱片。 “我们无法帮助您解决身份验证问题”。如果是连接问题,那么可以尝试一些方法,但事实并非如此。 “身份验证失败”只能由您或您的供应商解决。我只是给了你最常见的原因,我仍然认为这是正确的,但你只是没有在听或试图再次复制/粘贴你的 URI 来发现差异。