MongoDB 仅在 Ubuntu 上以 root 身份运行时才有效 - 数据目录问题
Posted
技术标签:
【中文标题】MongoDB 仅在 Ubuntu 上以 root 身份运行时才有效 - 数据目录问题【英文标题】:MongoDB only works when run as root on Ubuntu - data directory issue 【发布时间】:2011-07-15 02:59:59 【问题描述】:我使用official packages(mongodb-stable)安装了 MongoDB,并遵循了Quickstart guide,其中包括:
默认情况下,MongoDB 会将数据存储在
/data/db
,但不会自动 创建该目录。要创建它, 做:$ sudo mkdir -p /data/db/ $ sudo chown `id -u` /data/db
您还可以告诉 MongoDB 使用 不同的数据目录,与
--dbpath
选项。
只有当我运行 sudo mongod
时 MongoDB 才会启动 - 如果我尝试运行 mongod
我得到错误:
Mon Mar 14 15:27:07 [initandlisten] couldn't open /data/db/test.ns errno:13 Permission denied
Mon Mar 14 15:27:07 [initandlisten] couldn't open file /data/db/test.ns terminating
Mon Mar 14 15:27:07 dbexit:
什么给了?
【问题讨论】:
我希望所有问题都被问得这么好。 【参考方案1】:您以 root 身份创建了 /data/db
,因此它具有这些权限。您可以更改您的用户帐户的权限,或者您运行 mongo 的任何权限。
chown -R username /data/db
或/data
你也可以设置组
chown -R username.groupname
-R
以递归方式执行此操作,因此它会影响您创建的所有已以 root 身份运行 mongoDB 的文件。
【讨论】:
让所有者作为 root 并分配一个组有什么好处?还是将所有者专门设置为用户更好? 谢谢,我将目录改成 mongodb:mongodb 而不是我的用户名:我的组。 请记住,您可能必须在 chown -R username /data/db 前面运行 sudo【参考方案2】:我刚刚在 2021 年的 RHEL 8 上遇到了同样的问题。
我可以使用 sudo 权限运行 sudo mongod
,但可以不将其作为服务启动:sudo systemctl start mongod
。
我尝试了许多解决方案并在每次尝试后进行测试,最终为我解决的问题是将/data/db/
、/var/lib/mongo/
和/var/log/mongodb/
的所有权更改为mongod
。
确切的命令:
sudo chown -R mongod:mongod /var/lib/mongo/
sudo chown -R mongod:mongod /var/log/mongodb/
sudo chown -R mongod:mongod /data/
【讨论】:
以上是关于MongoDB 仅在 Ubuntu 上以 root 身份运行时才有效 - 数据目录问题的主要内容,如果未能解决你的问题,请参考以下文章