我真的尝试过,甚至重新安装MongoDB.
并且它与MongoDB bind_ip错误相同:bind()失败错误:99无法为套接字分配请求的地址
如果将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
>
Run Code Online (Sandbox Code Playgroud)
如果设置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
Run Code Online (Sandbox Code Playgroud)
地点:
$ which mongod
/usr/bin/mongod
$ which mongo
/usr/bin/mongo
Run Code Online (Sandbox Code Playgroud)
/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
Run Code Online (Sandbox Code Playgroud)
提前致谢.
Mar*_*erg 33
编辑:我不知道我阉了根本不对我的回答,或者如果行为bind_ip
改变了,但它是可以绑定到多个不同的IP地址
bind_ip:127.0.0.1,10.0.0.1,8.8.8.8
Run Code Online (Sandbox Code Playgroud)
因此,最有可能的是,mongod分配给绑定的IP地址之一在相关机器上不存在.
您只能绑定mongod
到一个IP,并且0.0.0.0
是"侦听所有可用网络接口"的别名.
所以要么使用
bind_ip=127.0.0.1
Run Code Online (Sandbox Code Playgroud)
听循环接口或
bind_ip=<someIP>
Run Code Online (Sandbox Code Playgroud)
只收听那个IP 或者
bind_ip=0.0.0.0
Run Code Online (Sandbox Code Playgroud)
收听系统上所有可用的IP.
如果您需要收听几个特定的IP,很可能是您的系统设计被搞砸了.
Ami*_*bey 13
我只是因为这个愚蠢的错误而遇到了同样的问题.
有评论的线和空间问题.
我做错了什么
# network interfaces
net:
port: 27017
#bindIp: 127.0.0.1
bindIp: privateIp
Run Code Online (Sandbox Code Playgroud)
代替
net:
port: 27017
bindIp: 10.1.2.4
Run Code Online (Sandbox Code Playgroud)
绑定到倍数ips
bindIp: [127.0.0.1,10.128.0.2]
Run Code Online (Sandbox Code Playgroud)
希望这个答案对某人有帮助.
小智 6
我花了好几个小时来解决这个问题。最终,查看日志并在谷歌上搜索我发现的内容让我找到了某个地方(当我在谷歌上搜索“mongo bindIp multipl”(等)时得到的只是一堆像这样的页面,其中的答案没有帮助)。首先, /etc/mongod.conf 中对我有用的块是:
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1,172.16.1.2
Run Code Online (Sandbox Code Playgroud)
没有空格,没有引号,没有括号...但即使正确地重新启动 mongodb 也会出现错误,然后它拒绝启动。我花了几个小时尝试各种其他不正确的配置(这令人沮丧,因为这条线的正确性并没有真正解决问题,而且我不知道还有另一个)。
我可以通过删除 mongodb 套接字文件来解决这个问题:
rm /etc/mongodb-27017.sock
Run Code Online (Sandbox Code Playgroud)
此后,运行
systemctl restart mongod
Run Code Online (Sandbox Code Playgroud)
工作没有错误。有趣的是(真正令人沮丧的部分原因)是,在试验和错误过程中,如果我将bindIP设置回127.0.0.1并重新启动mongod,它就会起作用,这让我认为该行没问题,问题是使用我正在尝试的替代条目/语法。(我最好的猜测是套接字文件中的某些内容引用了 ips?我不熟悉该编码元素。)
删除套接字后,我可以像这样进入 mongo(启用身份验证所需的选项):
mongo -u admin -p password --authenticationDatabase "admin")
Run Code Online (Sandbox Code Playgroud)
这表明 127.0.0.1 可以工作,并且可以从我的远程应用程序进行连接(在我当前的场景中,我正在设置的 nodebb 测试实例)。
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
Run Code Online (Sandbox Code Playgroud)
然后保存并执行以下操作以重新启动并验证服务:
> service mongod restart
> service mongod status
Run Code Online (Sandbox Code Playgroud)
这里没有失败,现在请确认有人正在监听:
> netstat -a |grep :27017
tcp 0 0 yourhostname:27017 0.0.0.0:* LISTEN
tcp 0 0 localhost:27017 0.0.0.0:* LISTEN
Run Code Online (Sandbox Code Playgroud)
现在,使用您喜欢的Mongo工具或命令行进行连接。
/etc/mongod.conf中不同格式的一些结果
小智 5
就我而言,上述选项均无效。最终对我有用的规范是:
bind_ip= [<IP_one> <IP_two>]
Run Code Online (Sandbox Code Playgroud)
一个例子可以是:
bind_ip= [127.0.0.1 10.0.0.4]
Run Code Online (Sandbox Code Playgroud)
(注意两个方向之间没有逗号)
我在 Ubuntu 16.4.5 (LTS) 上有 MongoDB 2.6.10
归档时间: |
|
查看次数: |
50743 次 |
最近记录: |