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 身份运行时才有效 - 数据目录问题的主要内容,如果未能解决你的问题,请参考以下文章

不支持 Ubuntu 中的 Docker 将文件系统切换到覆盖?

ubuntu虚拟机mongodb启动和端口映射

如何在 Heroku 上以 root 身份运行?

在Ubuntu下进行MongoDB安装步骤

在Ubuntu下进行MongoDB安装步骤

如何在 ubuntu20 上以 theano 为后端的 termux 运行 keras