【问题标题】:Can't connect to mongo lab on arduino yun无法连接到 arduino yun 上的 mongo lab
【发布时间】: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 来发现差异。

标签: node.js mongodb arduino


【解决方案1】:

我过去曾遇到过一些身份验证问题,我已按照以下步骤解决了这些问题:

1) 识别mongo 服务器和mongoose 的版本号

2) 确定您的服务器使用什么authentication mechanism,并确保mongoose 正在尝试使用您的服务器所期望的进行身份验证。如果您使用的是旧版本,则可能不支持某些身份验证机制,因此您需要升级。

3) 确定用户的创建位置。查看Authentication Database 并确保您的客户正在使用此类数据库进行身份验证。它可以不同于您存储数据的数据库。事实上,它曾经是admin。如果是这样,请查看您可以添加到连接字符串中的 authSource 选项。更多信息here.

除了以上所有,我建议您使用mongo 客户端来验证您的凭据是否正确并且您可以连接到数据库。

【讨论】:

  • 我的arduino yun上没有安装mongodb。这可能是问题吗?如果是这样,我将如何得到它?它不适用于 opkg。\
  • 我假设您尝试连接的address 是您启动并运行mongod 实例的任何主机(本地或远程)。您应该在开始开发之前测试您的环境是否正确。很明显,如果服务不可用,您将无法连接到该服务。
  • 是的,地址是云上的托管实例。我可以连接到计算机上的地址,但不能连接到我的 arduino。
  • 根据我回答中的第 1 步,您的计算机和 Arduino 中的这些版本是什么?您是否尝试在双方使用完全相同的程序进行连接?此外,我的回答中第 2 步和第 3 步的结果是什么?
  • 1.是的,它是相同的版本,因为我正在将模块从我的计算机复制到我的 arduino。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-21
  • 1970-01-01
  • 1970-01-01
  • 2014-07-09
相关资源
最近更新 更多