我刚刚在OSX上安装了MongoDB,并使用sudo mkdir -p /data/db
设置了目录结构。
但是当我尝试从我的用户帐户运行mongod
时,它返回了一个错误,指出我的用户帐户没有/data/db
的读写权限。
我该如何为我的帐户设置适当的/data/db
读写权限?
我刚刚在OSX上安装了MongoDB,并使用sudo mkdir -p /data/db
设置了目录结构。
但是当我尝试从我的用户帐户运行mongod
时,它返回了一个错误,指出我的用户帐户没有/data/db
的读写权限。
我该如何为我的帐户设置适当的/data/db
读写权限?
确保运行mongod
的用户帐户具有适当的目录权限。您可以执行以下操作来检查设置了哪些权限:
请注意,返回结果可能因系统而异。
例如,在Linux系统上,您可以使用ls -ld /data/db
命令来检查/data/db
目录的权限设置。
如果需要更改目录权限,请参考操作系统文档或联系系统管理员。
ls -ld /data/db/
如果它们被正确设置,它们应该看起来像这样...
如果权限设置不正确,当尝试运行
drwxr-xr-x X user wheel XXX Date Time /data/db/
mongod
时,您可能会看到类似于以下错误:
要使权限设置正确,可以运行以下命令。
exception in initAndListen: XXXXX Unable to create/open lock file: /data/db/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
sudo chmod 0755 /data/db && sudo chown $USER /data/db
sudo chmod 777 /data/db/
应该可以在Mac上运行。在运行此命令之前,权限看起来像:
drwxr-xr-x X User wheel Date /data/db
执行完命令后
drwxrwxrwx X User wheel Date /data/db
User
和 Date
部分需要替换成其他内容吗? - Agent Zebrasudo chmod 777 /data/db
$USER
是指数据库的用户名还是计算机用户账户?或者你是直接输入 $USER
这个字符串?哈哈,谢谢。 - Agent Zebrachmod 777 /path/to/file
允许所有人读写该文件,但是chmod 775 /path/to/file
只允许拥有者/组成员读写该文件。如果您正在开发Web服务器,请使用chmod 775 /path/to/file
。这里提供一些有用的阅读材料,特别是关于为什么使用777、775等数字而不是其他数字的原因:https://www.maketecheasier.com/file-permissions-what-does-chmod-777-means/。这些建议都不正确,mongodb-org-3.4.16-1.el7.x86_64 存在其他问题。它不能使用自定义的数据库路径启动。
[root@localhost vagrant]# chmod 777 /data/ /data/mongodb
[root@localhost vagrant]# chown mongod:mongod /data/ /data/mongodb
[root@localhost vagrant]# ls -lad /data/mongodb/
drwxrwxrwx. 2 mongod mongod 6 Jul 11 15:24 /data/mongodb/
[root@localhost vagrant]# systemctl start mongod
Job for mongod.service failed because the control process exited with error code. See "systemctl status mongod.service" and "journalctl -xe" for details.
[root@localhost vagrant]# stat /data/mongodb^C
[root@localhost vagrant]# !tail
tail /var/log/mongodb/mongod.log
2018-07-11T15:39:10.786+0000 I STORAGE [initandlisten] exception in initAndListen: 20 Attempted to create a lock file on a read-only directory: /data/mongodb, terminating
2018-07-11T15:39:10.786+0000 I NETWORK [initandlisten] shutdown: going to close listening sockets...
2018-07-11T15:39:10.786+0000 I NETWORK [initandlisten] shutdown: going to flush diaglog...
2018-07-11T15:39:10.786+0000 I CONTROL [initandlisten] now exiting
2018-07-11T15:39:10.786+0000 I CONTROL [initandlisten] shutting down with code:100
[root@localhost vagrant]# rpm -qa | grep mongo
mongodb-org-tools-3.4.16-1.el7.x86_64
mongodb-org-shell-3.4.16-1.el7.x86_64
mongodb-org-server-3.4.16-1.el7.x86_64
mongodb-org-mongos-3.4.16-1.el7.x86_64
mongodb-org-3.4.16-1.el7.x86_64
对我来说,所有给出的答案都没有起作用。最终,我将我的个人操作系统用户配置为root用户,然后手动进入db文件夹——右键单击以查看信息——并添加了自己的读写权限。
只需运行
sudo chown group:user /data/db
其中group
是您用户的一个组
sudo chmod 600 /path/to/db
chown
上不要忘记使用sudo
! - coblr