如何使用用户名和密码使用 mongorestore/mongodump?

Den*_*Hiu 8 mongodb

我知道这是一项基本的安全措施,但我无法使其与我的 mongodb 安装一起使用。每次我运行命令时:

mongorestore dump_folder -u "username" -p "password"
Run Code Online (Sandbox Code Playgroud)

它返回:

error reading database: not authorized on DATABASE_NAME to execute command { listCollections: 1, cursor: { batchSize: 0 } }
Run Code Online (Sandbox Code Playgroud)

我的问题是:我需要启用什么权限以及如何启用?

目前,我只是关闭 Mongo 的安全性,/etc/mongod.conf然后在恢复/转储我的数据库后重新启动它。

附加说明:这是我准备数据库及其用户的方式

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

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

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

  1. 我通过使用此命令登录对其进行了测试。它成功登录

    mongo localhost -u USER001 -p mypassword --authenticationDatabase DATABASE001
    
    Run Code Online (Sandbox Code Playgroud)
  2. 我想转储此数据库内容:

    mongodump  -u USER001 -p mypassword --authenticationDatabase DATABASE001
    
    Run Code Online (Sandbox Code Playgroud)

    它给我一个错误: Failed: error getting database names: not authorized on admin to execute command { listDatabases: 1 }

这是什么listDatabases?如何将其添加到我的角色中?

mar*_*nho 7

$ mongorestore --username adminUser --password pass123 --authenticationDatabase admin --db exampleDB dump/exampleDB
Run Code Online (Sandbox Code Playgroud)