【问题标题】:Use mongorestore to restore a database to MongoDB (3.4) with --auth enabled, SASL error使用 mongorestore 将数据库恢复到启用 --auth 的 MongoDB (3.4),SASL 错误
【发布时间】:2017-07-09 23:55:48
【问题描述】:

使用 mongorestore,我正在尝试将 MongoDB 数据库恢复到新服务器(两个版本都是 3.4)。新服务器启用了 -auth,因此您需要登录。该数据库不存在,因此我希望 mongorestore 使用 --db 选项创建它。这在未启用授权时有效,但如果我启用授权,则还原失败并出现以下错误:

失败:连接到数据库服务器时出错:服务器在 SASL 身份验证步骤中返回错误:身份验证失败。

当我尝试还原时,我使用的是具有 root 角色的管理员帐户。

备份 prod 并恢复到 dev 对我们来说是一项相当常规的活动,但我们不能因为上述错误而删除现有数据库并重新创建它,除非我们禁用没有多大意义的授权。有没有更好的方法来做到这一点/避免 SASL 错误/不必禁用身份验证?

【问题讨论】:

    标签: mongodb sasl mongorestore


    【解决方案1】:

    我遇到了同样的错误,虽然我不知道用我的管理员用户还原有什么问题(我的预感是密码中的 !,但转义没有帮助)我能够通过创建一个专门用于该角色的新用户。

    在 mongo shell 中:

    >use admin;
    
    >db.createUser({
      user: 'restoreuser',
      pwd: 'restorepwd',
      roles: ['restore']
    });
    

    在终端:

    $mongorestore --host databasehost:12345 --username restoreuser --password restorepwd --authenticationDatabase admin --db targetdb ./path/to/dump/
    

    【讨论】:

      【解决方案2】:

      感谢 Percona 的 Adamo Tonete,他帮助我们解决了这个问题。如果要使用具有 root 角色的管理员用户恢复数据库,则需要在 mongorestore 命令中指定身份验证数据库和用户。

      mongorestore --host 主机名:27017 -u adminuser -p pass --authenticationDatabase admin -d TargetDatabase /Data/TargetDatabaseRestore

      这告诉 mongo 使用 admin 数据库来验证您传入的用户。如果该用户分配了正确的权限,它将能够创建新数据库。

      【讨论】:

        【解决方案3】:

        首先访问你的数据库到 4366 端口然后运行这个命令

        mongorestore --port 4366 -u admin -p password --authenticationDatabase admin -d dealmoney /home/yash/Desktop/prodDump/teatingToProductionLastDump/dealmoney .
        

        【讨论】:

          猜你喜欢
          • 2021-10-23
          • 2019-01-28
          • 1970-01-01
          • 1970-01-01
          • 2021-01-14
          • 1970-01-01
          • 1970-01-01
          • 2015-01-19
          • 2013-05-15
          相关资源
          最近更新 更多