如何解决读取数据库错误:未在 mongo DB 中授权

how to solve the error reading database : not authorized in mongo DB

我正在使用 Mongo 数据库 3.4 版并且我在数据库中有一个用户

C:\Program Files\MongoDB\Server.4\bin>mongo
MongoDB shell version v3.4.5
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.5
> use admin
switched to db admin
> db.auth("myUserAdmin","abc123");
1

我使用了以下带有身份验证的查询来恢复转储文件

mongorestore --host 50.50.1.57:27017 --username myUserAdmin --password abc123 --authenticationDatabase admin --db targetdb E:\test\DB\test_02_19_2018_06_00_01\test

但是我遇到了问题,你能给我建议吗

2018-02-19T14:45:29.743+0530    the --db and --collection args should only be used when restoring from a BSON file. Other uses are deprecated and will not exist in the future; use --nsInclude instead
2018-02-19T14:45:29.745+0530    building a list of collections to restore from E:\test\DB\test_02_19_2018_06_00_01\test dir
2018-02-19T14:45:29.790+0530    Failed: targetdb.access_token: error reading database: not authorized on targetdb to execute command { listCollections: 1, cursor: { batchSize: 0 } }

创建具有读写权限的用户并尝试

db.createUser( { "user" : "user123",  "pwd": "pass",
             "roles" : [{ role: "dbOwner", db: "livmor_mongo" }, 
             { 
                     "role" : "readWrite", 
                     "db" : "livmor_mongo" 
             } ] } )

您也可以使用 userAdminAnyDatabase 角色代替 readWrite

MyUserAdmin 没有足够的权限恢复到 targetdb

您可以使用 Mongodb 的内置角色:

restore,这将为您提供从不包括 system.profile 收集数据的备份恢复数据所需的权限。它还将为您提供对任何资源的以下操作:

listCollections

这将解决您看到的错误:

not authorized on targetdb to execute command { listCollections: 1, cursor: { batchSize: 0 } }

backup 将提供备份数据所需的最低权限。

使用正确的 roles/privs 运行 更新您当前的用户:

db.updateUser( "MyUserAdmin",
  { roles : [  
    { role : "restore", db : "admin"  },
    { role : "backup", db : "admin"  }
  ] } )