【问题标题】:Find connection string for Robomongo connection settings to an Azure MongoDB查找到 Azure MongoDB 的 Robomongo 连接设置的连接字符串
【发布时间】:2023-03-12 18:39:01
【问题描述】:

在我的应用程序中,我使用带有 mongoose 的节点来连接到 MongoDB。 MongoDB 实例位于 Azure 中。我需要上面的,所以我可以直接连接到数据库。

看完这个就去做:How to connect Robomongo to MongoDB

我正在为客户使用 Robomongo 来执行此操作。如何找到连接字符串?

编辑:当前 IP 和端口导致“网络无法访问”。我已经尝试在我的节点应用程序中记录 mongodb mongoose 连接变量,但使用这些详细信息也不起作用。

【问题讨论】:

  • 不确定你的意思。您在哪里托管(或安装)MongoDB?您需要从那里获取连接字符串,并将其与 robomongo 一起使用。
  • 已编辑的问题,在 azure 中设置
  • 您是否在配置中配置了 MongoDB 以进行外部访问?您是否通过入站安全规则(或通过经典 VM 完成的端点)打开端口?
  • 是的,我在 mongo.conf 中取消了 bindIP 的注释,并在 Azure 的端点上为 proivate 和 public 设置了默认的 mongo 端口(通过经典 VM 完成)。我做了 service mongod restart
  • 嗨,有更新吗?

标签: node.js mongodb azure robo3t


【解决方案1】:

您可以尝试在您的 mongodb 服务器虚拟机中创建一个 SSH 隧道,并通过此隧道连接 mongodb 服务器。你可以在https://azure.microsoft.com/en-us/blog/create-your-own-dedicated-mysql-server-for-your-azure-websites/参考他类似的场景。

在VM中安装mongodb后,请尝试以下命令,最后在我这边可以正常工作:

  • sudo iptables -A INPUT -i eth0 -p tcp -m tcp --dport 27017 -j ACCEPT
  • sudo netstat -anltp|grep :27017
  • sudo ssh -fNg -L 27017:127.0.0.1:27018 azurevmuser@servername
  • 在 Azure 管理门户的 VM 仪表板中为端口 27018 创建终结点

然后就可以通过如下代码连接mongodb了:

 var mongoose = require('mongoose');
    mongoose.connect('mongodb://<your_server_vm>.cloudapp.net:27018/test');
    var db = mongoose.connection;
    db.on('error', console.error.bind(console, 'connection error:'));
    db.once('open', function() {
     console.log("we're connected!")
    });

【讨论】:

    【解决方案2】:

    原来 Azure 那天遇到了服务器问题(!)。您可以在此处阅读更新:

    https://azure.microsoft.com/en-gb/status/

    另外,我使用 Azure 机器 URL 连接到 mongo,由 Azure 在创建新机器时生成,而不是 IP,我认为这是出于安全原因。

    所以我使用:nameofmymachine.cloudapp.net:27017 并在 SSH 隧道选项卡下添加了详细信息(当然会使用 IP)以确保完整性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-04
      • 2016-08-09
      • 2016-06-13
      • 2017-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-21
      相关资源
      最近更新 更多