java - 如何使用java远程连接到我的服务器中的MongoDB?

标签 java mongodb server firewall database

我想通过笔记本电脑上的 Java 应用程序在服务器上使用 MongoDB。 这是我的 ufw 设置

aran@Aran:~$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
22                         ALLOW       Anywhere
80                         ALLOW       Anywhere
443                        ALLOW       Anywhere
21/tcp                     ALLOW       Anywhere
27017                      ALLOW       1.234.56.78
27017                      ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
22 (v6)                    ALLOW       Anywhere (v6)
80 (v6)                    ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)
21/tcp (v6)                ALLOW       Anywhere (v6)
27017 (v6)                 ALLOW       Anywhere (v6)

一开始我只有这个规则:

27017                      ALLOW       1.234.56.78

其中 1.234.56.78 是我的 IP 地址,但它不起作用,所以我添加了此规则:

27017                      ALLOW       Anywhere

但这也没有帮助。

这是我的java代码:

java.util.logging.Logger.getLogger("org.mongodb.driver").setLevel(Level.OFF);
MongoClientURI connectionString = new MongoClientURI("mongodb://123.45.67.89:27017");
MongoClient mongoClient = new MongoClient(connectionString);
MongoDatabase CaptionBotUsers = mongoClient.getDatabase("CaptionBotUsers");
//CaptionBotUsers.createCollection("users", new CreateCollectionOptions().autoIndex(true));
MongoCollection<Document> users = CaptionBotUsers.getCollection("users");
long found = users.count(Document.parse("{_id : " + Long.toString(user.getId()) + "}"));

但我得到:

com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting for a server that matches ReadPreferenceServerSelector{readPreference=primary}. Client view of cluster state is {type=UNKNOWN, servers=[{address=123.45.67.89:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, caused by {java.net.ConnectException: Connection refused: connect}}]

代码的最后一行(找到很久了...)

那么我该如何解决这个问题呢?

最佳答案

来自 MongoDB documentation ,它指出在某些安装中默认情况下仅监听本地连接 (127.0.0.1)。

要远程连接,您需要在 /etc/mongod.conf 中配置公共(public)可访问接口(interface):

...
net:
  port: 27017
  bindIp: <your-ip>, 127.0.0.1
...

关于java - 如何使用java远程连接到我的服务器中的MongoDB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46041607/

相关文章:

mongodb - 如何在 MongoDB 中继续追加子文档?

mongodb - openshift origin latest - 使外部资源可以访问 mongodb

node.js - 使用自己的服务器 node.js 托管 Firebase

apache - 通过 .htaccess 中断网站禁用 servertokens

java - 为什么以下对象不符合垃圾回收条件?

java - 如何检测不同类型的PDF

java - 如何使用 Spring Data REST 存储库创建和连接相关资源?

java android URL加密

mongodb - 通过 mongodb 中的聚合和 $facet 在每个文档中添加一个新字段

javascript - 为什么我对 server.js 的 get 请求返回 ionic - cloud 9 上的实际文件