除非以root身份运行,否则启动mongod会失败

时间:2014-06-08 00:24:30

标签: mongodb

我可以使用以下命令启动我的mongo服务器:

[lucas@ecoinstance]~/node/nodetest2$ sudo mongod --dbpath /home/lucas/node/nodetest2/data
 --fork --logpath /var/log/mongodb/mongod-nodetest2.log                                  
about to fork child process, waiting until server is ready for connections.
forked process: 10293
child process started successfully, parent exiting

但是当我尝试删除sudo时,我收到以下错误:

[lucas@ecoinstance]~/node/nodetest2$ mongod --dbpath /home/lucas/node/nodetest2/
data --fork --logpath /var/log/mongodb/mongod-nodetest2.log
about to fork child process, waiting until server is ready for connections.
forked process: 10284
ERROR: child process failed, exited with error number 1

以下是其他信息:

[lucas@ecoinstance]~/node/nodetest2$ ls -l data/*
-rw------- 1 mongodb mongodb 67108864 Jun  7 20:57 data/local.0
-rw------- 1 mongodb mongodb 16777216 Jun  7 20:57 data/local.ns
-rwxr-xr-x 1 mongodb mongodb        6 Jun  7 20:57 data/mongod.lock
-rw------- 1 mongodb mongodb 67108864 Jun  7 02:08 data/nodetest1.0
-rw------- 1 mongodb mongodb 16777216 Jun  7 02:08 data/nodetest1.ns
-rw------- 1 mongodb mongodb 67108864 Jun  7 23:01 data/nodetest2.0
-rw------- 1 mongodb mongodb 16777216 Jun  7 23:01 data/nodetest2.ns

data/journal:
total 3145744
-rw------- 1 mongodb mongodb 1073741824 Jun  7 23:01 j._0
-rw------- 1 root    root            88 Jun  7 23:01 lsn
-rw------- 1 mongodb mongodb 1073741824 Jun  6 03:10 prealloc.1
-rw------- 1 mongodb mongodb 1073741824 Jun  6 03:12 prealloc.2

[lucas@ecoinstance]~/node/nodetest2$ ls -l /etc/mongod.conf 
-rw-r--r-- 1 mongodb mongodb 1701 May  5 15:07 /etc/mongod.conf

[lucas@ecoinstance]~/node/nodetest2$ ls -l /var/log/mongodb/
total 120
-rw-r--r-- 1 mongodb mongodb 96801 Jun  7 05:48 mongod.log
-rw-r--r-- 1 root    root    15625 Jun  8 00:18 mongod-nodetest2.log
-rw-r--r-- 1 mongodb mongodb  2805 Jun  7 20:38 mongod-nodetest2.log.2014-06-07T20-57-47

我找不到类似的问题。这个问题的原因是什么?

更新 感谢下面Asya的回答,我运行了一个类似的命令,但是将日志文件的位置更改为不需要root访问权限的文件:

mongod --dbpath /home/lucas/node/nodetest2/data --fork --logpath /home/lucas/data/log/mongodb/mongod-nodetest2.log

我还遇到了mongod在后​​台运行的问题,类似于this question。在运行上述命令之前停止该过程对我有用。

谢谢Asya!

1 个答案:

答案 0 :(得分:6)

如果您以用户xxx启动mongod,那么它需要使用的所有目录和文件必须由用户xxx拥有 - 在您的情况下,我会看到root所拥有的几个文件mongod无法操纵这些文件。

修复权限并确保永远不再以root用户身份运行mongod。此外,当您从mongod收到错误时,查看日志文件将告诉您确切的错误原因。 (除非用户mongod无法写入文件,否则所有情况除外)。