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 求解答。是有线程没有关闭吗?
我以为local.ns是数据库初始化自动生成的。你说的“ls -l是什么”是想表达什么意思?还有一个疑问,有时候,use一个新数据库,会生成一个同名的文件夹,有时候不会,为什么呢?
不知道对你有没有帮助http://www.9958.pw/post/mongodb_12596
我直接mongod运行是可以的,没有报错~
@jiyinyiyong 有可能是这个原因,晚上回家试一下~
@jiyinyiyong 我试了一下,如果只有权限还是会报错,将文件夹的所有者设置为mongodb后,能正常启动服务。我感觉是service启动,mongodb需要对这个文件夹和里面的文件有读写权限,而且文件夹和里面文件的所有者需要是mongodb。是这样吗?
@jiyinyiyong 对的,我也是用root。表现就是:在数据库文件夹的所有者是root的情况下,直接用mongod命令可以启动数据库,而用service命令是不能启动的。我觉得读一下service相关的机制,就应该能了解具体原因了。
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之间的差异。