mongodb - mongo 和 mongodump 与 auth 一起工作,但 restore 不

标签 mongodb shell terminal

管理员用户权限:

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

        }
    }
]

我可以通过身份验证进入我的远程 mongo 数据库,例如,

mongo --host <hostname> -u "myself" -p "myself" --authenticationDatabase "admin"

我也可以像这样远程转储

mongodump --host <hostname> --port 27017 --username "myslef" --password "myself" --out home/myself/mongodb-backup

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

mongorestore --host <hostname> -u "myself" -p "myself" home/myself/mongodb-backup/

错误:

Failed: error getting auth version of server: not authorized on admin to execute command { getParameter: 1, authSchemaVersion: 1 }

最佳答案

你应该像这样给你的管理员添加 root 角色

db.grantRolesToUser( "myAdmin", [ "root" ])

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

关于mongodb - mongo 和 mongodump 与 auth 一起工作,但 restore 不,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34799507/

相关文章:

mongodb - 查找数组中最大值与查询匹配的所有 Mongo 文档

ruby-on-rails - 使用 mongoid 和 rails 显示嵌套树的有效方法

javascript - 在 JS 模板字符串中转义 ${} 的正确方法

c++ - 将外部进程的输出通过管道传输到正在运行的 C++ 脚本中

java - 如何使用字符串中的 json 执行聚合 mongo 查询?

javascript - MongoDB:使用 $map 更新查询管道中的对象

linux - 如何在 bash 变量中提取虚线分隔单词的首字母?

c - 自定义输入,在命令行中的单词中间写入时文本会被覆盖

macos - 使用 zsh 在终端 OS X (10.8.5) 中进行 gdb 调试

python - 如何在 Python 中打印 "Pretty"字符串输出