无法启动mongodb作为sudo

时间:2011-07-25 17:14:41

标签: mongodb

mongodb在尝试启动时返回与访问文件相关的错误:

root@mongo01:~# sudo service mongodb start
mongodb start/running, process 4118
root@mongo01:~# Mon Jul 25 17:03:54 [initandlisten] MongoDB starting : pid=4118 port=27017 dbpath=/var/lib/mongodb 64-bit 
Mon Jul 25 17:03:54 [initandlisten] db version v1.8.2, pdfile version 4.5
Mon Jul 25 17:03:54 [initandlisten] git version: 433bbaa14aaba6860da15bd4de8edf600f56501b
Mon Jul 25 17:03:54 [initandlisten] build sys info: Linux bs-linux64.10gen.cc 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_41
Mon Jul 25 17:03:54 [initandlisten] couldn't open /var/lib/mongodb/adrise.ns errno:13 Permission denied
Mon Jul 25 17:03:54 [initandlisten] error couldn't open file /var/lib/mongodb/adrise.ns terminating
Mon Jul 25 17:03:54 dbexit: 
Mon Jul 25 17:03:54 [initandlisten] shutdown: going to close listening sockets...
Mon Jul 25 17:03:54 [initandlisten] shutdown: going to flush diaglog...
Mon Jul 25 17:03:54 [initandlisten] shutdown: going to close sockets...
Mon Jul 25 17:03:54 [initandlisten] shutdown: waiting for fs preallocator...
Mon Jul 25 17:03:54 [initandlisten] shutdown: closing all files...
Mon Jul 25 17:03:54 closeAllFiles() finished
Mon Jul 25 17:03:54 [initandlisten] shutdown: removing fs lock...
Mon Jul 25 17:03:54 dbexit: really exiting now

Mon Jul 25 17:03:22 [initandlisten] MongoDB starting : pid=4095 port=27017 dbpath=/var/lib/mongodb 64-bit 
Mon Jul 25 17:03:22 [initandlisten] db version v1.8.2, pdfile version 4.5
Mon Jul 25 17:03:22 [initandlisten] git version: 433bbaa14aaba6860da15bd4de8edf600f56501b
Mon Jul 25 17:03:22 [initandlisten] build sys info: Linux bs-linux64.10gen.cc 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_41
Mon Jul 25 17:03:22 [initandlisten] journal dir=/var/lib/mongodb/journal
Mon Jul 25 17:03:22 [initandlisten] recover : no journal files present, no recovery needed
Mon Jul 25 17:03:22 [initandlisten] info preallocateIsFaster couldn't run; returning false
Mon Jul 25 17:03:22 [initandlisten] exception in initAndListen std::exception: couldn't open file /var/lib/mongodb/journal/j._0 for writing errno:13 Permission denied, terminating
Mon Jul 25 17:03:22 dbexit: 
Mon Jul 25 17:03:22 [initandlisten] shutdown: going to close listening sockets...
Mon Jul 25 17:03:22 [initandlisten] shutdown: going to flush diaglog...
Mon Jul 25 17:03:22 [initandlisten] shutdown: going to close sockets...
Mon Jul 25 17:03:22 [initandlisten] shutdown: waiting for fs preallocator...
Mon Jul 25 17:03:22 [initandlisten] shutdown: lock for final commit...
Mon Jul 25 17:03:22 [initandlisten] shutdown: final commit...
Mon Jul 25 17:03:22 [initandlisten] shutdown: closing all files...
Mon Jul 25 17:03:22 closeAllFiles() finished
Mon Jul 25 17:03:22 [initandlisten] shutdown: journalCleanup...
Mon Jul 25 17:03:22 [initandlisten] removeJournalFiles
Mon Jul 25 17:03:22 [initandlisten] shutdown: removing fs lock...
Mon Jul 25 17:03:22 dbexit: really exiting now

当我尝试:

root @ mongo01:〜#mongodb -f /etc/mongodb.conf

它正确启动,知道它导致问题的原因吗?

由于

5 个答案:

答案 0 :(得分:53)

  

Mon Jul 25 17:03:54 [initandlisten] couldn't open /var/lib/mongodb/adrise.ns errno:13 Permission denied

这是权限问题,请运行以下命令:

sudo chown -R mongodb:mongodb /var/lib/mongodb

答案 1 :(得分:21)

所以我突然遇到了这个问题,我不知道为什么。问题是upstart文件想要以用户mongodb的身份运行mongo。来自/etc/init/mongodb.conf

if [ "x$ENABLE_MONGODB" = "xyes" ]; then exec start-stop-daemon --start --quiet --chuid mongodb --exec  /usr/bin/mongod -- --config /etc/mongodb.conf; fi

chuid部分告诉它以不同的用户身份运行,即使您以root身份运行此脚本。出于某种原因,当我在ls -l中进行/var/lib/mongodb时,我注意到所有文件都归root所有,这就是为什么我们的mongodb用户无法使用它们。我刚刚这样做了:

sudo chown mongodb:mongodb /var/lib/mongodb

一切都很好。问题首先是怎么发生的?不确定。

答案 2 :(得分:1)

此文件是您的第一个数据文件/var/lib/mongodb/adrise.ns。实际上它是一个特定的,它是一个标识其他数据库文件的命名空间文件。

要使MongoDB正常工作,mongod进程需要访问两个文件夹:

  1. 数据文件夹:在您的情况下/var/lib/mongodb/
  2. 日志文件夹:不知道你把这个放在哪里
  3. 现在,如果您以root用户身份运行它,它应该可以访问每个每个文件夹。但是你应该确保没有其他人锁定这个文件夹。

    但是,您应该能够以较低的权限运行它。通常,您只需要用户级权限,只需确保用户有权访问这些文件夹。如果可能的话,你会想要在低于root的级别运行它。实际上,很多人都会创建一个mongodb用户并在自己的上下文中运行它。

答案 3 :(得分:0)

当我删除mongo 3.6并安装mongo 2.4时,我遇到了这个问题! 我的解决方案:

  1. 为您创建新目录&r; DB(某些/ var / lib / mongodb)
  2. 编辑config /etc/mongod.conf(dbpath = / var / lib / mongodb)
  3. 启动mongod

答案 4 :(得分:0)

试试这个命令。

sudo chown -R mongodb:mongodb /var/lib/mongodb

sudo service mongod restart

可以帮到你。