MongoDB:initAndListen中的exception:20试图在只读目录/ data / db上创build一个locking文件,终止
我在根目录下创build/data/db
并运行./mongod
:
[initandlisten] exception in initAndListen: 20 Attempted to create a lock file on a read-only directory: /data/db, terminating [initandlisten] shutdown: going to close listening sockets... [initandlisten] shutdown: going to flush diaglog... [initandlisten] now exiting [initandlisten] shutting down with code:100
问题是你创build的目录/data/db
是由root用户拥有的,而且你正在运行mongod。 有几种方法可以解决这个问题,但最终必须给相关目录提供正确的权限。 如果这是为了制作,我build议你检查一下文档,仔细想一想 – 你可能要特别小心。
但是,如果这仅仅是为了testing,而你只是需要这个工作,并继续下去,你可以试试这个,这将使每个人都可以写目录:
> sudo chmod -R go+w /data/db
或这个,这将使你拥有的目录:
> sudo chown -R $USER /data/db
你可以使用mongo作为根,为我工作:
$ sudo mongod
我遇到同样的问题,下面的解决scheme解决了这个问题。 你应该尝试下面的解决scheme。
sudo mkdir -p / data / db
sudo chown -R'username'/ data / db
如果您的系统正在使用SELinux,请确保您为所创build的目录使用正确的上下文:
ls -dZ /data/db/ ls -dZ /var/lib/mongo/
并用以下方法克隆上下文:
chcon -R --reference=/var/lib/mongo /data/db
我面对完全相同的问题,我解决了它,这里是一步一步的解释:
在尝试其他一切之前,只需要转到mongodb目录,其中包含mongodb的bin目录,并简单地使用terminal中的命令:
sudo bin / mongod
以root用户身份运行mongodb,可能会要求您以root用户身份input密码。 如果你仍然不能运行mongodb,那么我们来做下面的事情:
首先,在terminal中inputmongodb的数据目录的权限模式:
ls -ld / data
(ps或者我们可以input“ls -l /”来查看根目录下所有目录和文件(包括/ data目录)的权限模式。)
root用户的权限模式应该是“rwx”,即root用户能够读写,执行文件。 为了做到这一点,我们使用命令通过在terminal中input来更改权限模式:
chmod 755 / data
(即755是权限设置参数的特定八进制表示法)这将/ data目录的权限模式设置为“rwxr-xr-x”,即root用户可以读取,写入和执行,而Group用户和Everyone否则只能读取和执行。
注意:当您拒绝执行此操作时,请键入:
sudo chmod 755 / data
以root用户身份设置权限。
然后当这一步完成后,再次input: ls -ld / data来重新获得权限模式
和输出应该是这样的:
drwxr-xr-x 3根轮子102 Mar 3 17:00 / data
(psyou在开始时不需要担心“d”),并注意到“rwxr-xr-x”设置已经完成。
然后,我们都已经设置好了,现在可以切换回mongodb目录并键入:
sudo bin / mongod
运行mongodb。
希望这可以帮助。