【问题标题】:How to use mongorestore/mongodump with username and password?如何使用带有用户名和密码的 mongorestore/mongodump?
【发布时间】: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 的安全性,并在恢复/转储数据库后重新启动它。

补充说明: 这就是我准备数据库及其用户的方式

  1. 我使用管理员帐户登录,创建一个名为 DATABASE001 的数据库
  2. 并创建一个用户:

    use DATABASE001
    db.createUser({ 
      user: "USER001", 
      pwd: "mypassword",
      roles:[ { role: "readWrite", db: "DATABASE001" },"dbAdmin"  ]
    })
    

对于角色,我将 readWrite 添加到 DATABASE001 和 dbAdmin 我希望这个用户(USER001)能够备份或恢复他的数据库(DATABASE001)。

  1. 我用这个命令登录测试了它。登录成功

    mongo localhost -u USER001 -p mypassword --authenticationDatabase DATABASE001
    
  2. 我想转储这个数据库内容:

    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 角色。
  • 我建议回去好好看看用户帐户及其分配的角色。就像我说的,mongorestoremongodump 的 MongoDB 文档页面在每个文档的顶部都有一个明确定义的标题链接,该链接指向所需的访问权限,其中每个部分都列出了内置角色定义,其中还列出了每个需要个人特权。我不确定如何才能更清楚地说明这一点。
  • 如果这对您来说仍然是个问题,那么也许您应该记录您为设置用户所做的一切,以便清楚地诊断和/或比较。跨度>
  • 为什么你认为它应该有效?我只花了两秒钟的时间查看了您添加到问题中的详细信息,并且您在任何时候都没有真正分配文档中引用的“内置角色”。 dbAdmin 不一定具有所需的权限(恕我直言,它不应该)。 “仔细”阅读文档。 restore 角色可满足大多数恢复需求,backup 角色可满足大多数备份需求。

标签: mongodb


【解决方案1】:
$ mongorestore --username adminUser --password pass123 --authenticationDatabase admin --db exampleDB dump/exampleDB

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    • 1970-01-01
    • 2011-02-05
    • 2019-07-30
    • 2022-06-15
    • 1970-01-01
    相关资源
    最近更新 更多