更改数据目录后Mongodb权限错误

更改数据目录后Mongodb权限错误

我刚刚在 Ubuntu 上安装了 mongodb 版本 3.0.3。我编辑了conf文件,将默认数据目录更改为“/home/user/mongodb”,并授予它以下权限:

drwxr-xr-x  4 mongodb mongodb  4096 May 29 23:26 mongodb

我没有更改conf 文件中的任何其他内容。当我尝试启动 mongod 服务时

sudo service mongod start

并通过 mongo 命令连接到 shell,出现以下错误

MongoDB shell version: 3.0.3
connecting to: test
2015-05-29T23:58:49.450+0200 W NETWORK  Failed to connect to 127.0.0.1:27017, reason: errno:111 Connection refused
2015-05-29T23:58:49.452+0200 E QUERY    Error: couldn't connect to server 127.0.0.1:27017 (127.0.0.1), connection attempt failed
    at connect (src/mongo/shell/mongo.js:179:14)
    at (connect):1:6 at src/mongo/shell/mongo.js:179
exception: connect failed

每次我尝试启动服务器时,日志文件都会这样说:

2015-05-30T00:01:02.552+0200 I CONTROL  ***** SERVER RESTARTED *****
2015-05-30T00:01:02.581+0200 I STORAGE  [initandlisten] exception in initAndListen std::exception: boost::filesystem::status: Permission denied: "/home/user/mongodb/storage.bson", terminating
2015-05-30T00:01:02.581+0200 I CONTROL  [initandlisten] dbexit:  rc: 100

据我所知,权限是正确的。可能是什么问题呢?

答案1

默认情况下,用户主目录只能由其所有者读取、写入和列出,因此其他用户(root 用户除外)无法列出其他用户主文件夹的内容。因此,您需要确保 mongodb 用户有权访问新提供的目录。你可以使用类似命令来检查

namei -m /home/user/mongodb

输出示例

f: /home/scantlight/mongodb
  dr-xr-xr-x /
  drwxr-xr-x home
  drwx------ scantlight
  drwxr-xr-x mongodb

如你所见,我的主文件夹有读写我的权限,所有者...其他用户没有权限,因此我的主文件夹的内容不能被其他用户(root 除外)列出

当然,您不想向主目录上的其他用户授予写入或读取权限,但您希望他们可以访问目标文件夹。这是可以使用 x 标志的地方。当在文件上设置 x 标志时,意味着该文件可以被执行,因此它被称为执行标志...但是当在文件夹上设置此标志并且 r(读)或 w(写)标志均未设置时。这意味着同一组中的其他用户可以通过此文件夹到达更深的文件夹。

所以要确保mongodb用户能够访问、读取和写入/home/用户/mongodb文件夹...您的主文件夹应该为所有其他用户设置可执行标志(x 标志)。

chmod -R o+x /home/user/mongodb

之后,之前的输出示例应该如下所示

f: /home/scantlight/mongodb
 dr-xr-xr-x /
 drwxr-xr-x home
 drwx-----x scantlight
 drwxr-xr-x mongodb

注意所有其他用户的 x 权限...如果这没有帮助:)...只需检查里面的文件权限/home/用户/mongodb文件夹中包含的文件的权限可能存在问题?

相关内容