无法远程连接到MongoDB(即使未设置bindIp)

时间:2017-08-08 16:31:05

标签: linux mongodb server database-connection iptables

我正试图解决这个问题几个小时,我不知道为什么它不起作用。我用

设置了mongod
mongod --dbpath /some/path

因此未设置bind_ip(mongod正在侦听所有接口)。 我将所有iptables的策略设置为ACCEPT并刷新所有规则(所以我可以确定iptables不会阻塞任何内容) - iptables -S:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N DOCKER
-N DOCKER-ISOLATION
-N FORWARD_IN_ZONES
-N FORWARD_IN_ZONES_SOURCE
-N FORWARD_OUT_ZONES
-N FORWARD_OUT_ZONES_SOURCE
-N FORWARD_direct
-N FWDI_public
-N FWDI_public_allow
-N FWDI_public_deny
-N FWDI_public_log
-N FWDO_public
-N FWDO_public_allow
-N FWDO_public_deny
-N FWDO_public_log
-N INPUT_ZONES
-N INPUT_ZONES_SOURCE
-N INPUT_direct
-N IN_public
-N IN_public_allow
-N IN_public_deny
-N IN_public_log
-N OUTPUT_direct

我对服务器的公共IP进行了双重和三重检查,并且100%正确。但无论我做什么,当我尝试从本地机器连接到mongo时:

mongo <servers_ip>

我得到了

MongoDB shell version: 2.6.11
connecting to: servers_ip/test
2017-08-08T18:18:30.689+0200 warning: Failed to connect to servers_ip:27017, reason: errno:113 No route to host
2017-08-08T18:18:30.690+0200 Error: couldn't connect to server servers_ip:27017 (servers_ip), connection attempt failed at src/mongo/shell/mongo.js:148
exception: connect failed

有没有人知道我还能做些什么来使这项工作?

编辑: netstat -tanp |的输出grep mongod:

tcp        0      0 0.0.0.0:27017           0.0.0.0:*               LISTEN      4302/mongod 

2 个答案:

答案 0 :(得分:1)

好的,所以从我身边看来一切都很好。是我的VPS提供商 - OVH--谁阻止了端口而我无法做任何事情,但是将mongod端口更改为更低的值。感谢@nadavvadan的建议。

答案 1 :(得分:0)

  1. 设置您的用户

您需要为数据库设置用户名和密码才能访问 使用your_db

db.createUser({ user: 'user', pwd: 'password', roles: [{ role: 'readWrite', db:'yourdb'}] })

  1. 启用身份验证并打开对所有IP的MongoDB访问权限

sudo nano /etc/mongod.conf

`# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0
security:
  authorization: 'enabled'`
  1. 打开端口27017 在端口27017上创建一个新的自定义TCP,来源:Anywhere,0.0.0.0 / 0

  2. 最后一步:重新启动mongo守护程序(mongod)

    sudo service mongod restart

  3. 使用笔记本电脑上的mongo shell登录

    mongo -u user -p password serverip/your_db