MongoDB无法远程访问

时间:2016-01-11 03:32:46

标签: mongodb

我是linux服务器的新手。我在centos 6.3上安装了mongodb。我在这个命令中运行mongodb服务器:

Message: 
Stacktrace:
    at FirefoxDriver.prototype.findElementInternal_ (file:///c:/users/kubik/appdata/local/temp/tmp_sthxl/extensions/fxdriver@googlecode.com/components/driver-component.js:10659)
    at FirefoxDriver.prototype.findElement (file:///c:/users/kubik/appdata/local/temp/tmp_sthxl/extensions/fxdriver@googlecode.com/components/driver-component.js:10668)
    at DelayedCommand.prototype.executeInternal_/h (file:///c:/users/kubik/appdata/local/temp/tmp_sthxl/extensions/fxdriver@googlecode.com/components/command-processor.js:12534)
    at DelayedCommand.prototype.executeInternal_ (file:///c:/users/kubik/appdata/local/temp/tmp_sthxl/extensions/fxdriver@googlecode.com/components/command-processor.js:12539)
    at DelayedCommand.prototype.execute/< (file:///c:/users/kubik/appdata/local/temp/tmp_sthxl/extensions/fxdriver@googlecode.com/components/command-processor.js:12481)
[Finished in 30.3s]

我确信我已经让bind_ip听取所有ip:

mongod -config /etc/mongodb.conf &

但是,我也无法进行mongodb远程访问。我的服务器IP是192.168.2.24,我在我的本地电脑上运行mongo来访问这个mongodb,它告诉我这个错误:

# mongodb.conf

# Where to store the data.
dbpath=/var/lib/mongodb

#where to log
logpath=/var/log/mongodb/mongodb.log

logappend=true

rest = true
bind_ip = 0.0.0.0
port = 27017

但是,我可以使用此命令在mongodb安装的服务器中访问此mongodb:

Error: couldn't connect to server 192.168.2.24:2701
7 (192.168.2.24), connection attempt failed at src/mongo/shell/mongo.js:148
exception: connect failed

所以,我认为制作mongo远程访问可能会成功,但是linux服务器可能有问题,也许是防火墙?因此,我尝试使用该命令检查端口是否为远程访问打开:

mongo --host 192.168.2.24

没有返回任何内容,然后我使用此命令将端口添加到iptalbes:

iptables -L -n | grep 27017

并保存iptables&amp;重启它:

iptables -A INPUT -p tcp --dport 27017 -j ACCEPT
iptables -A OUTPUT  -p tcp --source-port 27017 -m state --state ESTABLISHED -j ACCEPT

我可以看到27017的端口被添加到iptables列表中,但它仍然无法正常工作。我认为打开27017港口可能不会成功。我该怎么办呢?我是linux服务器的新手,就像我的linux服务器pc离线一样。所以它不能使用关于“yum”的命令。请详细给我解决方案。非常感谢。

1 个答案:

答案 0 :(得分:2)

好像防火墙配置不正确。

  

免责声明:摆弄防火墙设置会带来安全隐患。 除非您知道自己要做什么,否则不要在生产系统上使用以下程序! 如果有任何疑问,请回到系统管理员或DBA。

问题

简单地说,防火墙限制了未授权方在受保护机器上运行的MongoDB等服务的访问权限。

CentOS仅允许默认访问ssh。我们需要配置防火墙,以便您可以访问MongoDB服务。

解决方案

我们将安装由CentOS提供的小工具&lt; 7(版本7提供了不同的方法),简化了iptables的使用,netfilter反过来配置root,Linux内核框架允许操作网络数据包 - 从而提供防火墙功能(以及其他酷)的东西)。

然后,我们将使用所述工具配置防火墙功能,以便可以从任何地方访问MongoDB 。我无法为您提供更安全的配置,因为我不知道您的网络设置。同样,在生产系统上使用此过程需要您自担风险。你被警告了!

安装system-config-firewall-tui

首先,您必须以Result of "yum -y install system-config-firewall-tui"身份登录CentOS框,这样可以安装和卸载软件包并更改系统范围的配置。

然后,您需要发出(美元符号表示shell提示符)

$ yum -y install system-config-firewall-tui

结果看起来应该是这样的

Main screen of "system-config-firewall-tui"

防火墙的配置

接下来,您需要启动刚刚安装的工具

$ system-config-firewall-tui

将创建一个小命令行GUI:

system-config-firewall-tui's "Other Ports" screen

不要简单地禁用防火墙!

分别按 Tab →| ,直到&#34;自定义&#34;按钮突出显示。现在按。在下一个屏幕中,突出显示&#34;转发&#34;然后按。您现在应该位于名为&#34;其他端口&#34;,

的屏幕中

Necessary configuration for MongoDB in the "Port and Protocol" screen

在其中突出显示&#34;添加&#34;然后按。这将带您进入一个屏幕&#34;端口和协议&#34;你填写如下所示

TCP

配置说明:MongoDB使用port 27017 by default for a standalone instance与客户端进行通信,并在Updated "Other Ports" screen上进行侦听。请注意,如果您不运行独立实例或副本集,则可能需要根据引用的列表更改端口。

下一步是突出显示&#34; OK&#34;并按,这似乎清除了输入。但是,我们刚刚进行的配置已保存。所以我们将按&#34;取消&#34;并返回&#34;其他港口&#34;屏幕,现在应该是这样的:

this article

现在,我们按&#34;关闭&#34;并返回&#34; system-config-firewall-tui&#34;的主屏幕。在这里,我们按&#34; Ok&#34;并且该工具会询问您是否确实要应用您刚才所做的更改。花点时间真的想一想。 ;)

按&#34;是&#34;现在将修改Linux内核执行的防火墙规则。

我们可以通过发出

来验证
$ iptables -L -n | grep 27017

应该导致下面的输出:

ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:27017

现在您应该能够连接到MongoDB服务器。