我真的尝试过,甚至重新安装MongoDB。
与MongoDB bind_ip error: bind() failed errno:99 Cannot assign requested address for socket
相同如果将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.1,192.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
提前致谢。
答案 0 :(得分:27)
编辑:我不知道我的回答是错误的还是bind_ip
的行为发生了变化,但是 可以绑定多个不同的IP
bind_ip:127.0.0.1,10.0.0.1,8.8.8.8
因此,最有可能的是,mongod分配给绑定的IP地址之一在相关机器上不存在。
您只能将mongod
绑定到一个IP,其中0.0.0.0
是&#34的别名;侦听所有可用的网络接口"。
所以要么使用
bind_ip=127.0.0.1
收听环回接口或
bind_ip=<someIP>
仅收听该IP 或
bind_ip=0.0.0.0
收听系统上所有可用的IP。
如果您需要收听几个特定的IP,很可能是您的系统设计被搞砸了。
答案 1 :(得分:12)
由于这个愚蠢的错误,我遇到了同样的问题。
有评论的线和空间问题。
我做错了什么
# network interfaces
net:
port: 27017
#bindIp: 127.0.0.1
bindIp: privateIp
而不是
net:
port: 27017
bindIp: 10.1.2.4
用于绑定到倍数ips
bindIp: [127.0.0.1,10.128.0.2]
希望这个答案对某人有用。
答案 2 :(得分:4)
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中的一些不同格式的结果
答案 3 :(得分:2)
我花了好几个小时用这个问题撞墙。最后,看着日志和谷歌搜索我发现的东西让我在某处(我在google搜索'mongo bindIp multipl'(等)时得到的是一堆像这样的页面,答案没有帮助)。 首先,/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它工作,这让我认为那条线是好的,问题是我正在尝试使用替代条目/语法。 (我最好的猜测是套接字文件中的某些内容引用了ips?我不熟悉编码元素。)
删除套接字后,我就可以像这样shell到mongo(启用身份验证时需要的选项):
mongo -u admin -p password --authenticationDatabase "admin")
确定127.0.0.1可以工作,也可以从我的远程应用程序连接(在我当前的场景中我正在设置的nodebb测试实例)。
答案 4 :(得分:1)
文件说
&#34;您可以连接逗号分隔值列表以将mongod绑定到多个IP地址。&#34;
所以,这不是真的......
答案 5 :(得分:1)
就我而言,以上所有选项均无效。最终对我有用的规范是:
bind_ip= [<IP_one> <IP_two>]
一个例子可能是:
bind_ip= [127.0.0.1 10.0.0.4]
(请注意,两个方向之间没有逗号)
我在Ubuntu 16.4.5(LTS)上具有MongoDB 2.6.10
答案 6 :(得分:0)
嘿我使用的是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它工作正常....
答案 7 :(得分:0)
使用MongoDB 4.0.5: 对我来说,以下工作:
bindIp=[127.0.0.1,11.22.33.44]
然后我打开身份验证:
security:
authorization: "enabled"
重新启动mongod(在Ubuntu 18.04上)给出了错误:
标量选项“ net.bindIp”必须为单个值
因此,我不得不执行bindIp:0.0.0.0。 也许有人知道如何结合bindIp和Security
答案 8 :(得分:0)
这是一种仅适用于Ubuntu的符号:(注意空格,符号)
bind_ip=[127.0.0.1,22.33.44.99,88.77.55.66]
22.33.44.99-我的服务器静态IP,88.77.55.66-我的笔记本电脑静态IP。这给了我一个从互联网访问mongodb的机会。不要忘记添加一条规则-将端口27017打开到ufw。
答案 9 :(得分:0)
对于那些仍然想知道的人-问题不是语法,而是您输入的地址。
为了接收远程客户端连接,您还需要添加服务器公共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_ip=[localhost,127.0.0.1,server_public_ip,remote_client_ip]
我们在其中放置了127.0.0.1和localhost以确保本地可访问性,因为不同的配置只能使用其中一种设置。
注意: bind_ip
接受多种语法。如果您有语法错误,mongodb服务将无法运行。您可以使用service mongodb status
进行检查。
不要永远不要放置0.0.0.0,因为您可能是每几个月发生一次的常规RANSOME攻击的受害者。 Read about it
答案 10 :(得分:0)
为我在ubuntu 18和mongo --version 4.x.xx上工作:
1-在etc / mongod.conf中-net add
bindIp:“ 127.0.0.1,0.0.0.0”
2-然后使用pm2:
sudo apt-get更新 须藤apt-get pm2
3-启动对mongod的pm2服务
pm2启动mongod
PD:您需要在生产场景中擦除0.0.0.0
答案 11 :(得分:0)
为我在ubuntu 18和mongo --version 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
3-启动对mongod的pm2服务
pm2 start mongod
PD:在生产场景中您需要删除0.0.0.0
答案 12 :(得分:0)
让我想到的是,我需要列出可以访问数据库的其他机器的 IP 地址。不是这种情况。您只需要列出运行 mongoDB 的服务器的 IP 地址。对我来说:
bindIp: localhost
致:
bindIp: localhost,127.0.0.1,<actual IP of my server>
然后我可以从我网络中的其他机器访问 MongoDB。我只是没有以正确的方式思考这个问题。把这个贴在这里,以防其他人和我有同样的脑放屁。
答案 13 :(得分:0)
就我而言
操作系统:Windows 8 (MongoDB) 操作系统:Raspbian Linux(客户端)
尝试了所有方法,以下配置对我有用
将 mongod.conf 文件更新为
bindIp: 0.0.0.0
在数据库机器窗口中打开防火墙端口,不要跳过这个。
https://www.windowscentral.com/how-open-port-windows-firewall