MongoDB绑定ip元';除非设置为0.0.0.0,否则不工作

MongoDB绑定ip元';除非设置为0.0.0.0,否则不工作,mongodb,Mongodb,我真的试过了,甚至重新安装了MongoDB 这对我来说是一样的 如果将bind_ip设置为:0.0.0.0或127.0.0.1,则该选项有效 $ sudo service mongod start mongod start/running, process 30040 $ sudo service mongod restart mongod stop/waiting mongod start/running, process 29704 $ mongo --port 19708 MongoDB

我真的试过了,甚至重新安装了MongoDB

这对我来说是一样的

如果将bind_ip设置为:0.0.0.0或127.0.0.1,则该选项有效

$ sudo service mongod start
mongod start/running, process 30040
$ sudo service mongod restart
mongod stop/waiting
mongod start/running, process 29704
$ mongo --port 19708
MongoDB shell version: 3.0.3
connecting to: 127.0.0.1:19708/test
>
如果将
bing_ip
设置为:
127.0.0.1192.118.96.10,42.112.36.110

$ sudo service mongod start
mongod start/running, process 29969
$ sudo service mongod restart
stop: Unknown instance:
mongod start/running, process 29766
$ mongo --port 19708
MongoDB shell version: 3.0.3
connecting to: 127.0.0.1:19708/test
2015-06-17T06:32:34.625+0000 W NETWORK  Failed to connect to 127.0.0.1:19708
reason: errno:111 Connection refused
2015-06-17T06:32:34.627+0000 E QUERY
Error: couldn't connect to server   127.0.0.1:19708 (127.0.0.1), connection attempt failed
at connect (src/mongo/shell/mongo.js:181:14)
at (connect):1:6 at src/mongo/shell/mongo.js:181
exception: connect failed
位置:

$ which mongod
/usr/bin/mongod
$ which mongo
/usr/bin/mongo
/etc/mongod.conf中的配置

dbpath=/var/lib/mongodb

logpath=/var/log/mongodb/mongod.log

logappend=true

port = 19708

# ips, eg:
# private ip for mongodb server: 192.118.96.10
# public ip for remote app server: 42.112.36.110

bind_ip = 127.0.0.1,192.118.96.10,42.112.36.110

auth = true

提前感谢。

编辑:我不知道我的回答是否有误,或者绑定ip的行为是否发生了变化,但可以绑定到多个不同的ip

bind_ip:127.0.0.1,10.0.0.1,8.8.8.8
因此,最有可能的情况是,分配给mongod绑定的一个IP地址在相关计算机上不存在


您只能将
mongod
绑定到一个IP,其中
0.0.0
是“侦听所有可用网络接口”的别名

所以要么使用

bind_ip=127.0.0.1
收听回圈接口

bind_ip=<someIP>
bind_ip=0.0.0.0
侦听系统上所有可用的IP


如果你需要听几个特定的IP,很可能你的系统设计出了问题。

嘿,我使用的是MongoDB shell版本:3.2.6

bindIP = 127.0.0.1,192.168.0.50 
bindIP = [127.0.0.1,192.168.0.50]
bind_ip = 192.168.6.38 
不工作,我已使用此命令编辑mongod.conf

sudo -i gedit /etc/mongod.conf file 

并将bind_ip=0.0.0.0更改为bind_ip=192.168.6.38它工作正常….

我也遇到了同样的问题,只是因为这个愚蠢的错误

存在线条和空间问题

我做错了什么

# network interfaces
net:
  port: 27017
 #bindIp: 127.0.0.1
bindIp: privateIp
而不是

net:
  port: 27017
  bindIp: 10.1.2.4
用于绑定到多个IP

bindIp: [127.0.0.1,10.128.0.2]
希望这个答案对某人有所帮助。

文档中说

“您可以连接逗号分隔值列表,将mongod绑定到多个IP地址。”


所以,这不是真的…

我花了好几个小时来讨论这个问题。最后,通过查看日志和谷歌搜索我在那里找到的东西,我找到了一些地方(当我在谷歌搜索“mongo bindIp Multiple”(等等)时,我得到的只是一堆像这样的页面,其中的答案毫无帮助)。 首先,/etc/mongod.conf中对我有用的块是:

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1,172.16.1.2
没有空格,没有引号,没有括号。。。但即使正确重启mongodb,也会出现错误,然后拒绝启动。我花了数小时尝试其他各种不正确的配置(这是令人沮丧的,因为这一行的正确性实际上并没有解决问题,我不知道还有另一个)

我可以通过删除mongodb套接字文件来解决这个问题:

rm /etc/mongodb-27017.sock 
在这之后,跑步

systemctl restart mongod
工作没有错误。有趣的是(部分原因让我非常沮丧)在试错过程中,如果我将bindIP设置回127.0.0.1并重新启动mongod,它就工作了,这让我觉得那行行还可以,问题在于我尝试的替代条目/语法。(我最好的猜测是套接字文件中的某些内容引用了IP?我不熟悉这种编码元素。)

删除套接字后,我就可以像这样使用mongo(启用身份验证时需要选项):

这确定了127.0.0.1可以工作,也可以从我的远程应用程序(在我当前的场景中,是我正在设置的nodeb测试实例)进行连接。

Mongo 3.6.2社区

我的解决方案是编辑/etc/mongod.conf的部分

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1,192.168.1.240   # No brackets, No spaces, only comma separated

#security
然后保存并执行以下操作以重新启动和验证服务:

> service mongod restart
> service mongod status
此处无故障,现在验证是否有人在侦听:

> netstat -a |grep :27017

tcp   0   0  yourhostname:27017   0.0.0.0:*     LISTEN
tcp   0   0  localhost:27017      0.0.0.0:*     LISTEN
现在使用您喜爱的Mongo工具或命令行进行连接

/etc/mongod.conf中不同格式的一些结果

  • 逗号和空格只会导致绑定第一个IP
  • 仅空格分隔符只会导致绑定第一个IP
  • []环绕导致无法启动mongod
使用MongoDB 4.0.5: 对我来说,以下几点起了作用:

bindIp=[127.0.0.1,11.22.33.44]
然后我打开了Auth:

security:
   authorization: "enabled"
重新启动mongod(在Ubuntu 18.04上)时出现错误:

标量选项“net.bindIp”必须是单个值

因此我不得不做bindIp:0.0.0.0。
也许有人知道如何将bindIp和安全性结合起来。在我的例子中,上述选项都不起作用。最终对我有效的规范是:

bind_ip= [<IP_one> <IP_two>]

(请注意,两个方向之间没有逗号)


我在Ubuntu 16.4.5(LTS)上安装了MongoDB 2.6.10这是一种仅在Ubuntu上有效的符号:(注意空格和符号)


22.33.44.99-我的服务器静态ip,88.77.55.66-我的笔记本电脑静态ip。这让我有机会从互联网上访问mongodb。不要忘记在ufw中添加一条规则-开放端口27017。

对于那些仍然感到疑惑的人来说-问题不在于语法,而在于您输入的地址

为了接收远程客户端连接,您还需要添加服务器公共IP。因此,你必须补充:

 - localhost
 - 127.0.0.1 // Add both localhost and 127.0.0.1 to ensure local accessibility
 - server_public_ip  // This is important one. Add the public server IP address.
 - remote_client_ip1
 - remote_client_ip2
 - remote_client_ip3 // As many client IPs as you want to grant access to
因此,配置应如下所示:

bind\u ip=[localhost,127.0.0.1,server\u public\u ip,remote\u client\u ip]

我们将127.0.0.1和localhost放在一起,以确保本地可访问性,因为不同的配置只能使用其中一种设置

注意:
绑定ip
接受多个语法。如果出现语法错误,mongodb服务将不会运行。您可以使用
服务mongodb状态检查它


千万不要将0.0.0.0放在首位,因为你可能会成为每隔几个月发生一次勒索性袭击的受害者

在ubuntu 18和mongo上为我工作--4.x.xx版:

1-在etc/mongod.conf-net add中

bindIp:“127.0.0.1,0.0.0.0”

2-然后使用pm2:

sudo apt-get update 

sudo apt-get pm2
sudoapt获得更新 sudo容易得到pm2

3-启动mongod的pm2服务

pm2 start mongod
pm2启动mongod


PD:您需要删除生产场景中的0.0.0.0,请为我在ubuntu 18和mongo上工作--4.x.xx版:

1-在etc/mongod.conf-net add中

bindIp:“127.0.0.1,0.0.0.0”

2-然后使用pm2:

sudo apt-get update 

sudo apt-get pm2
三,-
sudo apt-get update 

sudo apt-get pm2
pm2 start mongod
bindIp: localhost
bindIp: localhost,127.0.0.1,<actual IP of my server>
bindIp: 0.0.0.0
 https://www.windowscentral.com/how-open-port-windows-firewall