我的mongo数据库需要更多空间,所以我去了当地的电脑商店,买了一个新硬盘,安装好了。然后,我将所有文件从/var/lib/mongodb
复制到/media/didier/mongodb/mongodb/
,并使用命令/media/didier/mongodb/mongodb/
更改了sudo chown -R mongodb:mongodb /media/didier/mongodb/mongodb/
的所有权。然后,我将配置文件更改为/etc/mongod.conf
以指向良好的数据目录。基本上,我遵循Changing MongoDB data store directory的指示。
权限看起来很好,配置文件看起来也很好,但是当我使用sudo service mongod start
启动mongodb时,我的日志中有以下异常
014-07-16T09:11:37.362-0400 [initandlisten] MongoDB starting : pid=5899 port=27017
dbpath=/media/didier/mongodb/mongodb/ 64-bit host=miaou
2014-07-16T09:11:37.362-0400 [initandlisten] db version v2.6.3
2014-07-16T09:11:37.362-0400 [initandlisten] git version: 255f67a66f9603c59380b2a389e386910bbb52cb
2014-07-16T09:11:37.362-0400 [initandlisten] build info: Linux build12.nj1.10gen.cc 2.6.32-431.3.1.el6.x86_64 #1 SMP Fri Jan 3 21:39:27 UTC 2014 x86_64 BOOST_LIB_VERSION=1_49
2014-07-16T09:11:37.362-0400 [initandlisten] allocator: tcmalloc
2014-07-16T09:11:37.362-0400 [initandlisten] options: { config: "/etc/mongod.conf", net: { bindIp: "127.0.0.1" }, storage: { dbPath: "/media/didier/mongodb/mongodb/" }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log" } }
2014-07-16T09:11:37.362-0400 [initandlisten] exception in initAndListen std::exception: boost::filesystem::status: Permission denied: "/media/didier/mongodb/mongodb/", terminating
2014-07-16T09:11:37.362-0400 [initandlisten] dbexit:
2014-07-16T09:11:37.362-0400 [initandlisten] shutdown: going to close listening sockets...
2014-07-16T09:11:37.362-0400 [initandlisten] shutdown: going to flush diaglog...
2014-07-16T09:11:37.362-0400 [initandlisten] shutdown: going to close sockets...
2014-07-16T09:11:37.362-0400 [initandlisten] shutdown: waiting for fs preallocator...
2014-07-16T09:11:37.362-0400 [initandlisten] shutdown: lock for final commit...
2014-07-16T09:11:37.362-0400 [initandlisten] shutdown: final commit...
2014-07-16T09:11:37.362-0400 [initandlisten] shutdown: closing all files...
2014-07-16T09:11:37.362-0400 [initandlisten] closeAllFiles() finished
2014-07-16T09:11:37.362-0400 [initandlisten] dbexit: really exiting now
知道出了什么问题吗?当我只是运行sudo mongod --config /etc/mongod.conf
时,一切正常。所以我认为这是一个许可问题。
喝彩!
答案 0 :(得分:2)
问题是 mongodb 用户无法访问硬盘驱动器。要在所有用户之间共享硬盘,您需要通过添加以下行来更改/etc/fstab
:
UUID=a43bc179-f0e5-464b-bd77-1be6a7581ec2 /media/mongodb ext4 defaults 0 0
这将在启动时将硬盘驱动器挂载到/media/mongodb
目录。有关详细信息,请参阅https://help.ubuntu.com/community/Fstab。
简而言之,要在ubuntu计算机上使用不同的硬盘作为mongodb上的数据位置,需要执行以下三个步骤:
答案 1 :(得分:0)
我认为问题是您需要更改/ media挂载点的权限,以使“其他”组和用户拥有r + x(读取和执行)权限;至少这对我来说是固定的。做
sudo chmod a+rx /media
会做到的。您想确保对我认为的mongodb数据的整个路径也是如此,因此可以执行sudo chmod -R a+rx /media
以使其递归,或更改驱动器的权限,然后将每个子文件夹移至mongodb文件夹:
sudo chmod a+rx /media/didier
sudo chmod a+rx /media/didier/mongodb
sudo chmod a+rx /media/didier/mongodb/mongodb