23

我刚刚安装了 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

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

我还检查了守护进程是否也在运行,它是 - 我什至尝试使用--fork.

有没有人遇到过这个?或者有什么建议?

谢谢

更新:

重新启动后 - 以下是日志:

** 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
4

10 回答 10

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
于 2014-09-24T16:53:25.700 回答
16

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

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

更新检查您的防火墙配置。由于您要连接到外部 IP,因此可以将其配置为阻止,即使是从本地框。

于 2012-02-05T23:43:45.953 回答
11
sudo rm /var/lib/mongodb/mongod.lock
于 2012-02-28T02:17:28.360 回答
4

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

首先删除 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

用于收听所有可用的 ip

bindIp: [127.0.0.1,10.128.0.2]

重启mongodb

sudo service mongod start

希望这个答案对某人有所帮助

于 2016-06-07T08:01:54.007 回答
2

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

当您想要连接到 localhost 或默认配置以外的主机时,您可以执行以下操作:

mongo <host>
于 2012-02-06T00:15:37.677 回答
2

以下步骤可能对您有所帮助:

  1. 打开终端并运行“ sudo rm /var/lib/mongodb/mongod.lock
  2. 现在运行“ sudo mongod --repair
  3. 现在“ sudo start mongodb
  4. 现在只需检查 mongodb 状态“ sudo status mongodb ”的状态

5 最后调用命令“ mongo

于 2016-01-21T14:38:26.600 回答
2

在 /etc/mongod.conf

我变了,

bindIp: 127.0.0.1

bindIp: 0.0.0.0

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

顺便说一句,在 Ubuntu 18 下运行时,注释掉#bindIp: 127.0.0.1对我不起作用。

于 2018-09-07T07:38:26.127 回答
1

我在mongod运行但尚未“正确”运行时遇到了这个问题。我猜可能有更好的方法可以在安装后等待它出现,但添加 asleep 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 脚本未连接到 MongoDB,即使状态处于活动状态

于 2021-05-21T11:07:07.533 回答
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
于 2018-12-17T09:29:17.810 回答
0

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

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

于 2020-05-11T02:52:56.313 回答