我/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
Run Code Online (Sandbox Code Playgroud)
Bjo*_*che 261
问题是您创建的目录/data/db由root用户拥有并且只能由root用户编写,但您自己正在运行mongod.有几种方法可以解决这个问题,但最终,您必须为相关目录提供正确的权限.如果这是用于制作,我建议你检查文档并仔细考虑 - 你可能需要特别小心.
但是,如果这只是用于测试而你只是需要它来工作并继续使用它,你可以试试这个,这将使每个人都可以写入目录:
> sudo chmod -R go+w /data/db
Run Code Online (Sandbox Code Playgroud)
或者这将使您拥有的目录:
> sudo chown -R $USER /data/db
Run Code Online (Sandbox Code Playgroud)
San*_*ich 50
在Mac上,我必须执行以下操作:
sudo chown -R $USER /data/db
sudo chown -R $USER /tmp/
Run Code Online (Sandbox Code Playgroud)
因为还有一个/tmpMongo也需要访问的文件
小智 32
你可以使用mongo作为root,适合我:
$ sudo mongod
Run Code Online (Sandbox Code Playgroud)
drr*_*sum 21
如果您的系统使用SELinux,请确保为您创建的目录使用正确的上下文:
ls -dZ /data/db/
ls -dZ /var/lib/mongo/
Run Code Online (Sandbox Code Playgroud)
克隆上下文:
chcon -R --reference=/var/lib/mongo /data/db
Run Code Online (Sandbox Code Playgroud)
Blo*_*gic 17
首先停止所有mongoDB服务,然后在上创建一个目录/,这意味着root,如果你没有,也删除端口文件。授予该目录的所有权限,成为该目录的所有者,运行以下命令:
sudo service mongod stop
sudo rm -rf /tmp/mongod*
sudo mkdir -p /data/db
sudo chmod -R a+wxr /data
sudo chown -R $USER:$USER /data
Run Code Online (Sandbox Code Playgroud)
现在你已经完成了,只需启动 MongoDB 服务,如果没有帮助,请尝试更改端口,如:
sudo service mongod restart && mongod # if didn't help run below cmd
mongod --port 27018
Run Code Online (Sandbox Code Playgroud)
注意:对我来说,所有这些东西都有效,希望对你有用,伙计!
Ham*_*han 16
我遇到了同样的问题,以下解决方案解决了这个问题.您应该尝试以下解决方案.
sudo mkdir -p/data/db
sudo chown -R'username'/ data/db
plc*_*sta 12
修复/data/db(或/var/lib/mongodb)的权限 :
sudo chown -R mongodb: /data/db
Run Code Online (Sandbox Code Playgroud)
然后重新启动MongoDB,例如使用
sudo systemctl restart mongod
Run Code Online (Sandbox Code Playgroud)
如果这没有帮助,请检查您的错误消息,如果您使用的是与 /var/lib/mongodb 不同的数据目录。在这种情况下运行
sudo chown -R mongodb: <insert your data directory here>
Run Code Online (Sandbox Code Playgroud)
不错的解决方案,但我想知道为什么没有人为 Windows 提供解决方案。
如果您使用的是 Windows,则只需“以管理员身份运行”cmd。