无法从主机 Windows 上的 Java 客户端连接到安装在来宾 Ubuntu VM 上的 MongoDb

Unable to connect to MongoDb installed on a guest Ubuntu VM from Java Client on host Windows

我无法从我的 Java 客户端连接到我的 Mongo 数据库实例。 MongoDb 实例安装在 VirtualBox 内的 Ubuntu VM 会话中。当我在 Ubuntu 中从 Mongo shell 命令 运行 时,Mongo 工作正常 - 但我无法从我的 Windows 7 Intellij 会话连接到它.

我的Java客户端代码如下,

package com.mycom.mongodb.demo;

import com.mongodb.MongoClient;

public class App
{
    public static void main( String[] args )
    {

        MongoClient mongoClient = new MongoClient("192.168.171.68", 27017);

        mongoClient.getDatabaseNames().forEach(System.out::println);

    }
}

但我收到如下所示的错误消息。

我可以 Ping 我的 Ubuntu 盒子的 IP 地址,但我无法远程登录到 MongoDb 正在 运行ning 的 IP:Port .

这是我的 mongo.cfg 文件

MongoDb 在 Ubuntu 机器上的 LocalHost 上 运行ning - 所以也许这是我需要配置的区域?任何帮助将不胜感激。

这是我启动 mongod 的命令行

sudo /opt/mongodb/mongodb-linux-x86_64-ubuntu1604-3.6.3/bin/mongod --config /var/opt/mongodb2/mongo.cfg

更新: 如果我包含“--bind_ip_all”参数,即

,我就能让它工作

sudo /opt/mongodb/mongodb-linux-x86_64-ubuntu1604-3.6.3/bin/mongod --bind_ip_all --config /var/opt/mongodb2/mongo.cfg

我想这对于一个小的演示程序来说是可以的,但不是一个永久的解决方案

我使用@CodeCaster 提供的 link 找到了答案 - 谢谢。

我将 "bindIp" 条目添加到 "mongo.cfg" 文件中,如下所示。这是我的 Ubuntu 虚拟机的 IP 地址,我使用终端 window.

中的 "ifconfig" 找到了它
robbie70@robbie70-vm-ubuntu64:~$ more /var/opt/mongodb2/mongo.cfg
net:
   port: 27017
   bindIp: 192.168.171.68
systemLog:
   destination: file
   path: "/var/opt/mongodb2/logs/mongodb2.log"
   logAppend: true
   quiet: false
storage:
   dbPath: "/var/opt/mongodb2/data"

现在当我开始时 MongoDb 我 在命令行中指定“--bind_ip_all”,

sudo /opt/mongodb/mongodb-linux-x86_64-ubuntu1604-3.6.3/bin/mongod --config /var/opt/mongodb2/mongo.cfg

和测试演示 Java 客户端程序现在运行正常,