mongodb在ubuntu的安装
参考: http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/
安装完成,在/etc/mongodb.conf配置自己的 dbpath,logpath等,即可指定到路径。
然后即可使用service来启动mongo数据库:
service mongodb start/stopservice的默认权限是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/