【问题标题】:MongoDB only works when run as root on Ubuntu - data directory issueMongoDB 仅在 Ubuntu 上以 root 身份运行时才有效 - 数据目录问题
【发布时间】: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:

什么给了?

【问题讨论】:

  • 我希望所有问题都被问得这么好。

标签: ubuntu permissions mongodb chown


【解决方案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/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多