无法连接到MongoDB

时间:2012-02-05 23:20:36

标签: mongodb ubuntu openvz

我刚刚安装了MongoDB(标准的Ubuntu版本,而不是最新的版本),由于某些原因我无法连接:

Mon Feb  6 03:11:22 Error: couldn't connect to server 127.0.0.1 shell/mongo.js:79
exception: connect failed

现在我的机器不是127.xx1它出于某种原因xxx2(但是我已经改变了我的配置以绑定到该地址,并且还尝试绑定到我的公共IP,但没有用。

配置:

#mongodb.conf

# Where to store the data.

# Note: if you run mongodb as a non-root user (recommended) you may
# need to create and set permissions for this directory manually,
# e.g., if the parent directory isn't mutable by the mongodb user.
dbpath=/var/lib/mongodb

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

logappend=true

bind_ip = 199.21.114.XX
port = 27017

我检查了日志,只显示启动信息。

我还检查过deamon也在运行,它是 - 我甚至尝试使用--fork手动运行它。

有没有人遇到过这个?还是有什么建议吗?

THX

更新:

重启后 - 这是日志:

** WARNING: You are running in OpenVZ. This is known to be broken!!!

Tue Feb  7 19:43:32 [initandlisten] db version v1.8.2, pdfile version 4.5
Tue Feb  7 19:43:32 [initandlisten] git version: nogitversion
Tue Feb  7 19:43:32 [initandlisten] build sys info: Linux allspice 2.6.24-28-se$
Tue Feb  7 19:43:32 [initandlisten] *** warning: spider monkey build without ut$
Tue Feb  7 19:43:32 [initandlisten] waiting for connections on port 27017
Tue Feb  7 19:43:32 [websvr] web admin interface listening on port 28017

10 个答案:

答案 0 :(得分:25)

我通过在/etc/mongod.conf文件中注释掉以下行来解决了这个问题。

# Listen to local interface only. Comment out to listen on all interfaces. 
#bind_ip = 127.0.0.1

您需要在重新启动mongod进程时遵循此配置更改。

sudo service mongod restart

答案 1 :(得分:14)

您必须通过运行mongo 199.21.114.XX来指定IP(199.21.114.XX)。

否则,如果您希望它也在localhost上侦听,则应删除配置文件中的bind_ip设置。

更新检查防火墙配置。由于您连接到外部IP,因此可以将其配置为阻止,甚至可以从本地框中进行阻止。

答案 2 :(得分:10)

sudo rm /var/lib/mongodb/mongod.lock

答案 3 :(得分:3)

我有同样的问题只是因为这个愚蠢的错误。

首先删除mongodb文件,这很好

rm -rf /tmp/mongodb-27017.sock

我在/etc/mongod.conf

中错了
# 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]

重启mongodb

sudo service mongod start

希望这个回答有助于某人

答案 4 :(得分:2)

默认情况下,运行mongo控制台命令将在localhost上查找mongodb,因此127.0.0.1 IP是您的本地环回。此外,mongod的默认配置应该在localhost上可用。除非你打开auth,否则现在开始这样做会更好。确保您已启用auth或您的数据库在公共IP上公开运行。

如果要连接到localhost或默认配置以外的主机,请执行以下操作:

mongo <host>

答案 5 :(得分:1)

以下步骤可以帮助您:

  1. 打开终端并运行“ sudo rm /var/lib/mongodb/mongod.lock
  2. 现在运行“ sudo mongod --repair
  3. 现在“ sudo start mongodb
  4. 现在只需检查mongodb状态的状态“ sudo status mongodb
  5. 5最后只是调用命令“ mongo

答案 6 :(得分:1)

在/etc/mongod.conf

我改变了,

bindIp: 127.0.0.1

bindIp: 0.0.0.0

是所有端口。是的,我知道这很冒险,但是我正在内部网络上运行。

BTW注释掉#bindIp: 127.0.0.1对我不起作用,在Ubuntu 18下运行。

答案 7 :(得分:1)

mongod 正在运行但尚未“正常”运行时,我遇到了这个问题。我猜可能有更好的方法可以在安装后等待它出现,但添加 sleep 10 似乎可以解决它。

稍微不那么粗鲁的方法可能是tail -f它的日志文件并查找它告诉您它正在侦听您指定的接口的事件。

local log=/var/log/mongodb/mongod.log
sudo -u mongodb touch "$log"
service mongod start &
launcher=$!
tail -0f "$log" |
grep -q 'port: 27017'
wait "$launcher"
sleep 1

最后的sleep有点绝望;在它记录启动之后,它似乎需要一点时间,直到它正确启动和监听。

另见Bash shell script not getting connect to MongoDB even if status is active

答案 8 :(得分:0)

另一种方法是添加mongod选项参数bind_ip

mongod -–help

-bind_ip arg逗号分隔的IP地址列表                                         监听-默认情况下为localhost

-bind_ip_all绑定到所有IP地址

mongod --fork --logpath /var/log/mongodb.log --dbpath /data/db --bind_ip 0.0.0.0

答案 9 :(得分:0)

如果您使用的是Windows,请运行服务 然后检查mongoDB服务器是否正在运行,如果未运行,请启动它。

mongoDB服务器默认在本地主机上运行:27017。 单击localhost:27017首先创建一个管理员用户。