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。

希望这可以帮助。