mongo 和 mongodump 可与 auth 配合使用,但恢复则不能

Pra*_*nna 3 shell terminal mongodb

管理员用户权限:

db.getUsers()
[
    {
        "_id" : "admin.myself",
        "user" : "myself",
        "db" : "admin",
        "roles" : [
            {
                "role" : "userAdminAnyDatabase",
                "db" : "admin"
            },
            {
                "role" : "dbAdmin",
                "db" : "reports"
            },
            {
                "role" : "dbAdmin",
                "db" : "places"
            }
        ],
        "customData" : {

        }
    }
]
Run Code Online (Sandbox Code Playgroud)

我能够对我的远程 mongo 数据库进行身份验证,例如,

mongo --host <hostname> -u "myself" -p "myself" --authenticationDatabase "admin"
Run Code Online (Sandbox Code Playgroud)

我还可以像这样远程进行转储

mongodump --host <hostname> --port 27017 --username "myslef" --password "myself" --out home/myself/mongodb-backup
Run Code Online (Sandbox Code Playgroud)

但是,当我修改数据库上的某些集合并尝试像下面的代码一样恢复它时,它不起作用并引发身份验证错误。

mongorestore --host <hostname> -u "myself" -p "myself" home/myself/mongodb-backup/
Run Code Online (Sandbox Code Playgroud)

错误:

Failed: error getting auth version of server: not authorized on admin to execute command { getParameter: 1, authSchemaVersion: 1 }
Run Code Online (Sandbox Code Playgroud)

Iva*_*ovk 5

您应该像这样向管理员添加 root 角色

db.grantRolesToUser( "myAdmin", [ "root" ])
Run Code Online (Sandbox Code Playgroud)

只有在那之后你才能从备份中恢复