【发布时间】:2017-05-29 08:54:09
【问题描述】:
我知道这是一项基本的安全措施,但我无法使其适用于我的 mongodb 安装。每次我运行命令时:
mongorestore dump_folder -u "username" -p "password"
返回:
error reading database: not authorized on DATABASE_NAME to execute command { listCollections: 1, cursor: { batchSize: 0 } }
我的问题是:我需要启用什么权限以及如何启用?
目前,我只是在/etc/mongod.conf 中关闭了 Mongo 的安全性,并在恢复/转储数据库后重新启动它。
补充说明: 这就是我准备数据库及其用户的方式
- 我使用管理员帐户登录,创建一个名为 DATABASE001 的数据库
-
并创建一个用户:
use DATABASE001 db.createUser({ user: "USER001", pwd: "mypassword", roles:[ { role: "readWrite", db: "DATABASE001" },"dbAdmin" ] })
对于角色,我将 readWrite 添加到 DATABASE001 和 dbAdmin
我希望这个用户(USER001)能够备份或恢复他的数据库(DATABASE001)。
-
我用这个命令登录测试了它。登录成功
mongo localhost -u USER001 -p mypassword --authenticationDatabase DATABASE001 -
我想转储这个数据库内容:
mongodump -u USER001 -p mypassword --authenticationDatabase DATABASE001它给我一个错误:
Failed: error getting database names: not authorized on admin to execute command { listDatabases: 1 }
这是什么listDatabases ?如何将其添加到我的角色中?
【问题讨论】:
-
也许您会在Required Access 下的文档中找到它,并且可能参考restore role?我是说真的,我刚刚扫描了手册页,很清楚。
-
我读过,但不明白。我使用 createUser() 命令在该数据库中创建了一个用户。我还添加了 readWrite 和 dbAdmin 角色。
-
我建议回去好好看看用户帐户及其分配的角色。就像我说的,mongorestore 和 mongodump 的 MongoDB 文档页面在每个文档的顶部都有一个明确定义的标题链接,该链接指向所需的访问权限,其中每个部分都列出了内置角色定义,其中还列出了每个需要个人特权。我不确定如何才能更清楚地说明这一点。
-
如果这对您来说仍然是个问题,那么也许您应该记录您为设置用户所做的一切,以便清楚地诊断和/或比较。跨度>
-
为什么你认为它应该有效?我只花了两秒钟的时间查看了您添加到问题中的详细信息,并且您在任何时候都没有真正分配文档中引用的“内置角色”。
dbAdmin不一定具有所需的权限(恕我直言,它不应该)。 “仔细”阅读文档。restore角色可满足大多数恢复需求,backup角色可满足大多数备份需求。
标签: mongodb