前几天,当我尝试使用mongodb Compass连接到远程(LAN内)mongo服务器时遇到了这个问题。 因此,我这样编辑mongodb.config:
port = 27017
bind_ip = 127.0.0.1,192.168.2.101
其中192.168.2.101是私有mongo服务器ip,我设法与Compass连接。 问题是,当我使用mongodb.config中的上述配置启动或重新启动服务器时,mongodb作为服务拒绝自动启动,我必须使用终端手动启动它:
sudo service mongodb start
日志文件坚持我在启动时尝试启动服务的问题是:
listen(): bind() failed errno:99 Cannot assign requested address for socket: 192.168.2.101:27017
Failed to set up sockets during startup.
但是我已经用netstat(作为用户和root)进行了检查,没有任何东西消耗端口27017,我在启动时绑定了私有ip。 有趣的是,启动后,如果我手动启动mongodb,则一切正常,并且localhost和private ip均正确绑定。
因此,为了使其更清楚,这是步骤的简短时间表:
MongoDb可以正常启动,并在此配置下自行启动->
port = 27017
bind_ip = 127.0.0.1
我编辑mongodb.config以便像这样绑定到另一个IP->
port = 27017
bind_ip = 127.0.0.1,192.168.2.101
我重新启动mongo服务-不重新启动服务器计算机(一切正常)
因此出现的问题是: 为什么当我在mongodb.config中绑定第二个IP地址时,mongo服务将在重新启动后无法自动启动,并且需要手动启动(在没有套接字分配错误的情况下,它可以正常运行)和/或为什么套接字错误仅在启动时发生而不是手动启动? 问题可能在哪里?
在此先感谢您,我将继续尝试解决方案,但任何帮助将不胜感激。
p.s。我不想使用0.0.0.0绑定,也不希望使用bash启动该服务。我使用Debian Stretch和Mongo 3.2.11。