mongodb服务无法启动,但是直接启动数据库可以。
发布于 2年前 作者 chuguixin 3674 次浏览

mkdir xxx后mongod --dbpath xxx初始化了一下,然后在另外的一个命令行中运行mongo显示已经链接。然后,更改mongo.conf个dbpath后,service启动,报错。我更改了xxx文件夹的权限后,仍然启动报错。已经删除过mongod.lock文件。现在,mongod命令能启动,而servce却不能启动,报错如下: 命令行中报错:ERROR: child process failed, exited with error number 45 log中:couldn’t open /var/lib/mongo/xxx/local.ns errno:13 Permission denied error couldn’t open file /var/lib/mongo/xxx/local.ns terminating 求解答。是有线程没有关闭吗?

13 回复

/var/lib/mongo/xxx/local.ns 这个文件是什么情况, ls -l 是什么?

我以为local.ns是数据库初始化自动生成的。你说的“ls -l是什么”是想表达什么意思?还有一个疑问,有时候,use一个新数据库,会生成一个同名的文件夹,有时候不会,为什么呢?

@chuguixin ls -l 是看具体的文件权限, 看一下也许会多看到点 比如这个: http://www.mkyong.com/mongodb/mongodb-couldnt-open-datadbyourdb-ns-errno13-permission-denied/ ns 文件问题不清楚

我直接mongod运行是可以的,没有报错~

@jiyinyiyong 有可能是这个原因,晚上回家试一下~

@jiyinyiyong 我试了一下,如果只有权限还是会报错,将文件夹的所有者设置为mongodb后,能正常启动服务。我感觉是service启动,mongodb需要对这个文件夹和里面的文件有读写权限,而且文件夹和里面文件的所有者需要是mongodb。是这样吗?

@chuguixin 具体看吧. 我启动 MongoDB 都是用 root 的, 文件夹全是 root 所有

@jiyinyiyong 对的,我也是用root。表现就是:在数据库文件夹的所有者是root的情况下,直接用mongod命令可以启动数据库,而用service命令是不能启动的。我觉得读一下service相关的机制,就应该能了解具体原因了。

@chuguixin 你是说 service 不是 root 权限跑的? 期待你看的结果 :)

1、cmd.exe 要以管理员身份运行 2、–dbpath 参数结尾不要带"/" 3、–logpath 参数是文件

比如: mongod --logpath D:\mongodb-win32-x86_64-2.4.5\logs --logappend --dbpath D:\mongodb-win32-x86_64-2.4.5\data\db --directoryperdb --serviceName mongoDB --install

@jiyinyiyong 不确定,只试验的表现让我这样联想。至少service和直mongod存在一些权限方面的差异。

嗯,学习了。我觉得,我的问题的原因应该在于service和mongod之间的差异。

回到顶部