33

我无法连接到MongoDB。在 Ubuntu 中它可以工作,但我现在在CentOS中工作。这是错误消息:

MongoDB shell 版本:2.4.2
连接到:测试
Sat Apr 20 07:22:09.390 JavaScript 执行失败:错误:无法在 src/mongo/shell/mongo.js:L112 连接到服务器 127.0.0.1:27017
异常:连接失败

我尝试删除该mongod.lock文件,但它不起作用。

4

8 回答 8

78

如果您运行的是 Ubuntu,则文件夹所有权存在问题。

运行这些命令:

  1. 停止 MongoDB 服务

    sudo service mongodb stop
    
  2. 删除 MongoDB 锁定文件

    sudo rm /var/lib/mongodb/mongod.lock
    
  3. 将所有权从 root 更改为 MongoDB 路径

    sudo chown -R mongodb:mongodb /var/lib/mongodb/
    
  4. 启动 MongoDB 服务

    sudo service mongodb start
    
  5. 测试 mongo 应用程序

    mongo
    

然后你将能够成功执行(我希望)。

参考:Stack Exchange 站点数据库管理员错误的回答:更改 mongodb 数据目录时无法连接到服务器 127.0.0.1:27017 src/mongo/shell/mongo.js:91

于 2013-06-01T21:36:34.737 回答
34

尝试删除 /var/lib/mongodb/mongod.lock 并重新启动 mongo 服务

sudo rm /var/lib/mongodb/mongod.lock
sudo service mongodb restart
于 2013-04-27T02:41:14.163 回答
16

此方法仅适用于您想要修复数据文件而不保留原始文件的情况。要查找 dbpath 所在的位置,请使用

vim /etc/mongodb.conf

检查选项dbpath=

(我有dbpath=/var/lib/mongodb。)

默认:/data/db/

典型位置包括/srv/mongodb或。/var/lib/mongodb/opt/mongodb

/var/lib/mongodb替换为您的dbpath

sudo rm /var/lib/mongodb/mongod.lock
sudo mongod --dbpath /var/lib/mongodb/ --repair
sudo mongod --dbpath /var/lib/mongodb/ --journal

(确保您在运行上述行的终端中保持运行状态。不要按Ctrl+C或退出它。)mongo现在在另一个窗口中键入要启动的命令。

我希望这对你有用!对于那些想要在保留原始文件的同时修复数据文件的人,请参阅mongo恢复

于 2013-05-08T10:02:45.660 回答
3

我过去也有同样的问题。就我而言,我没有足够的可用空间来存放日志文件。释放一些空间解决了这个问题。

于 2013-05-07T09:09:17.090 回答
2

我不知道为什么@lkrzysiak 的回答被否决了:它对我有用!可用空间不足也可能是我遇到此错误的原因,请参阅我得到的日志:

    Mon Aug 12 17:02:59.159 [initandlisten] recover : no journal files present, no recovery needed
    Mon Aug 12 17:02:59.159 [initandlisten] 
    Mon Aug 12 17:02:59.159 [initandlisten] ERROR: Insufficient free space for journal files
    Mon Aug 12 17:02:59.159 [initandlisten] Please make at least 3379MB available in /var/lib/mongodb/journal or use --smallfiles
    Mon Aug 12 17:02:59.159 [initandlisten] 
    Mon Aug 12 17:02:59.159 [initandlisten] exception in initAndListen: 15926 Insufficient free space for journals, terminating
    Mon Aug 12 17:02:59.159 dbexit: 
    Mon Aug 12 17:02:59.159 [initandlisten] shutdown: going to close listening sockets...

经过一些清洁以释放一些空间后,它就像一个魅力!

于 2013-08-12T15:24:58.443 回答
2

我遇到了同样的问题。在 bin 内运行 mongod(你安装了 mongodb 的地方)对我有用。我也没有足够的空间。

于 2013-08-19T12:47:50.373 回答
0

它可能是 $PATH 和权限问题的组合。

尝试以下步骤:

更新您的 $PATH 变量以指向您的 MongoDB bin 文件。在我的情况下 brew install MongoDB 到这个文件夹:

/usr/local/Cellar/mongodb/2.4.6/

为了更新您的 $PATH 变量,请执行以下操作:

$ sudo vi /etc/paths

然后,按“i”在 Vi 中插入文本并将您的 MongoDB 路径附加到“路径”文件的末尾并重新启动终端。

/usr/local/Cellar/mongodb/2.4.6/bin

使用 'Esc : w q' 保存并退出 Vi 编辑器。

使用 echo 显示您的路径变量:

$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/Cellar/mongodb/2.4.6/bin

现在尝试检查 Mongo 版本,如果你得到关注,那么你就在正确的轨道上!

$ mongo --version
MongoDB shell version: 2.4.6

现在我们需要创建数据库目录。我使用了 MongoDB 文档中建议的默认 '/data/db' 位置。我还创建了一个日志目录,以避免在 Mongo 尝试创建任何日志时出现任何权限问题。改变所有权,这将完成这项工作。

$ sudo mkdir /data/db
$ sudo mkdir /data/log
$ whoami
username
$ chown -R username /data

现在,我们将为首次运行“mongod”命令时提供的 MongoDB 创建一个默认配置文件。现在,我还要指出,'mongod' 将启动一个服务,它将侦听传入的数据连接。这与执行“$service mysqld start”类似。让我们继续创建配置文件。请记住,我创建了非常基本的配置文件。但是,您可以添加许多其他变量来配置 MongoDB。这是我第一次玩 MongoDB,所以我知道的和我在 MongoDB 文档上读到的一样多!我创建了“mongodb.conf”。

$ sudo vi /etc/mongodb.conf

添加以下内容:

fork = true
port = 27017
quiet = true
dbpath = /data/db
logpath = /data/log/mongod.log
logappend = true
journal = true

请注意,MongoDB 服务器的默认端口是 27017。请使用您在第 5 步中创建的 dbpath 和 logpath 的路径。不要忘记关闭并保存 conf 文件。

现在我们都准备好启动我们的 MongoDB 服务了。打开终端的两个实例。在终端 1 中,输入:

$ sudo mongod -f /etc/mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 3516
all output going to: /data/log/mongod.log
child process started successfully, parent exiting

如果您收到上述消息,则表明您已成功启动 Mongod 服务。

现在,要连接到它,在 Terminal 2 中输入以下内容:

$mongo test
MongoDB shell version: 2.4.6
connecting to: test
Server has startup warnings:
Tue Sep 3 16:55:43.527 [initandlisten]
Tue Sep 3 16:55:43.527 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
>

忽略警告,但您已成功连接到“测试”数据库!凉爽的!

就这样。当我第一次尝试在我的 Mac 上安装 MongoDB 副本时,我应用了这个解决方案。看看这是否对你也有帮助。

有关详细信息,您可以访问此处 - http://arcanebytes.com/2013/09/03/mongodb-installation-on-mac-os-x/#comment-1036112094

我希望它有帮助!

干杯,钦梅

于 2014-02-09T05:33:10.163 回答
0

如果您在 /etc/mongo.conf 中更改了 mongoDB 的默认端口,也会出现此错误

在这种情况下,要通过外壳连接,请使用:-

$mongo 127.0.0.1:your_new_port_number

或者

$mongo -u <user> -p <pass> --host <host> --port your_new_port_number

来自MongoDB 文档

于 2013-05-27T01:51:06.483 回答