为什么我不能启动mongodb

这是错误的:

(mysite)zjm1126@zjm1126-G41MT-S2:~$ /usr/local/mongodb/bin/mongod /usr/local/mongodb/bin/mongod --help for help and startup options Wed Apr 27 10:02:41 [initandlisten] MongoDB starting : pid=2652 port=27017 dbpath=/data/db/ 32-bit ** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data ** see http://blog.mongodb.org/post/137788967/32-bit-limitations ** with --dur, the limit is lower Wed Apr 27 10:02:41 [initandlisten] db version v1.8.1, pdfile version 4.5 Wed Apr 27 10:02:41 [initandlisten] git version: a429cd4f535b2499cc4130b06ff7c26f41c00f04 Wed Apr 27 10:02:41 [initandlisten] build sys info: Linux bs-linux32.10gen.cc 2.6.21.7-2.fc8xen #1 SMP Fri Feb 15 12:39:36 EST 2008 i686 BOOST_LIB_VERSION=1_37 Wed Apr 27 10:02:41 [initandlisten] exception in initAndListen std::exception: Unable to create / open lock file for lockfilepath: /data/db/mongod.lock errno:13 Permission denied, terminating Wed Apr 27 10:02:41 dbexit: Wed Apr 27 10:02:41 [initandlisten] shutdown: going to close listening sockets... Wed Apr 27 10:02:41 [initandlisten] shutdown: going to flush diaglog... Wed Apr 27 10:02:41 [initandlisten] shutdown: going to close sockets... Wed Apr 27 10:02:41 [initandlisten] shutdown: waiting for fs preallocator... Wed Apr 27 10:02:41 [initandlisten] shutdown: closing all files... Wed Apr 27 10:02:41 closeAllFiles() finished Wed Apr 27 10:02:41 [initandlisten] shutdown: removing fs lock... Wed Apr 27 10:02:41 [initandlisten] couldn't remove fs lock errno:9 Bad file descriptor Wed Apr 27 10:02:41 dbexit: really exiting now 

启动MongoDB的用户帐户需要具有对/data/db/目录的写入权限 …您可以像这样更改这个…

该命令会将/data/db/的所有者更改为正在使用的用户帐户。

 $ sudo chown `id -u` /data/db $ mongod 

如果您仍然遇到MongoDB启动问题,则需要删除/data/db/mongod.lock ,然后在数据库上运行修复…

 mongod --repair 

更多关于修复命令在这里 。

或者sudo调用mongod或更改/data/db/mongod.lock的权限,以便它可以由您写入。

我通过在MongoDB上做了一个chown来解决这个问题。

 sudo chown -R mongodb:mongodb /data 

这是因为,当你这样做

 ls -lrth /data drwxr-xr-x 2 mongodb mongodb 6 Jan 5 02:31 journal -rwxr-xr-x 1 mongodb mongodb 0 Jan 5 02:31 mongod.lock drwxr-xr-x 2 ubuntu root 24 May 8 20:02 configdb 

希望这可以帮助。

确保你没有运行一个mongod实例。

这是为我工作。 我首先查看是否有一个实例在后台运行,如下所示:ps aux | grep mongo

我看到有:48358 bla bla mongod

所以我杀了它:杀死48358

然后我能够很好地运行它。

在这里,我是如何解决它的

  1. 删除locking文件后,我使用sudo mongod --repair --config=/etc/mongodb.conf来修复它,在此之后,我使用ls -l /var/lib/mongodb/mongod.lock检查了mongod.lock权限
  2. 它显示根是锁文件的所有者,所以我把它改回到mongodb使用sudo chown mongodb:mongodb /var/lib/mongodb/*
  3. 然后使用sudo service mongodb restart启动mongodb服务

如果你想拯救一个副本集的成员, 不要使用上面描述的这个方法。 请使用MongoDB的ReSync文档中描述的过程。

在Mac OSX Yosemite之后,使用brew进行标准安装:

 sudo chown -R `id -u` /data/db 

如果没有启动(检查是否有挂起和阻塞连接):

 lsof -i:27017 

输出类似于:

 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mongod 16948 andi 8u IPv4 0x883a71bc9412939d 0t0 TCP *:27017 (LISTEN) 

PID值并运行:

 kill -9 <PID> 

现在你应该可以启动mongo服务器: mongod ,然后例如在单独的控制台窗口中用mongo连接它