无法从主机Windows上的Java客户端连接到guest虚拟机Ubuntu VM上安装的MongoDb

时间:2018-03-15 16:29:49

标签: windows mongodb ubuntu virtualbox

我无法从Java客户端连接到我的MongoDB实例。 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);

    }
}

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

enter image description here

我可以Ping我的Ubuntu盒子的IP地址,但是我无法telnet到IP:运行MongoDb的端口。

enter image description here

这是我的mongo.cfg文件

enter image description here

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

这是启动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

我认为对于小型演示程序是可以的,但不是永久解决方案

1 个答案:

答案 0 :(得分:0)

我使用@CodeCaster提供的链接找到答案 - 谢谢。

我添加了" bindIp"进入" mongo.cfg"文件如下所示。这是我的Ubuntu VM的ip地址,我通过使用" 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 Client程序运行正常, enter image description here