日期:2014-05-16  浏览次数:20388 次

mongodb关于启动权限的问题

mongodb在ubuntu的安装

参考:     http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/

安装完成,在/etc/mongodb.conf配置自己的 dbpath,logpath等,即可指定到路径。

然后即可使用service来启动mongo数据库: 

service mongodb start/stop
service的默认权限是mongodb用户,一般不是root用户


问题

有时候我们会因为数据的问题(如备份mongodump, 恢复mongorestore)会重新修复数据库存

mongod --repair --dbpath=f:/dbpath

这个时候就要注意你所使用的权限了,一般会是root用户。

不过问题就来了,当你重启mongodb的时候,发现启动不了,log日志报出的是: 

Fri Mar 28 13:05:01 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: 
/opt/mongo/data/mongod.lock errno:13 Permission denied

或者

warning couldn't write to / rename file /data/db/journal/prealloc.0: couldn't open file 
/opt/mongo/data/journal/prealloc.0 for writing errno:13 Permission denied 
Fri Mar 28 13:09:59 [initandlisten] exception in initAndListen: 13516 couldn't open file 
/opt/mongo/data/journal/j._0 for writing errno:13 Permission denied, terminating


等等,基本上都是说Permission denied的事。

解决

其实也很明险,主要还是权限的问题。

当你使用 “root”账号在 mongod上做一些文章的时候,生成的文件和目录都会是root的权限。

而当你用service mongodb start时,这个的启动并不是root账号,一般是mongodb账号,因而自然访问不了一些root的文件和文件夹了。

所以只要重新分配dbpath的权限即可:

sudo chown -R mkyong /data/db (自定义的data路径也可)


参考:http://www.mkyong.com/mongodb/mongodb-couldnt-open-datadbyourdb-ns-errno13-permission-denied/