68

当我在 MongoDB(版本 3)中创建所有数据库的备份时:

mongodump --username bacUser --password 12345

没关系。但是当我尝试创建选定数据库的备份时:

mongodump --username bacUser --password 12345 --db test

它给了我这个错误:

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

4

14 回答 14

127

使用这个:

--authenticationDatabase admin

mongodump 和 mongorestore 命令需要存储 mongodb 用户凭据的数据库名称。(感谢@Zubair Alam)

于 2015-08-14T15:36:12.843 回答
29

这应该有效。

mongodump -h SERVER_NAME:PORT -d DATABASE_NAME -u DATABASE_USER -p PASSWORD

如果用户名或密码错误,也会弹出此错误。

于 2016-05-11T13:55:46.267 回答
18
mongodump --host <host-ip> --port 27017 --db <database>  --authenticationDatabase admin --username <username> --password <password> --out ./Documents/

在所有的线索之后,我发现上面的工作命令可以从 mongdb 转储。

于 2020-02-18T14:02:25.293 回答
7
mongodump --collection coll_name --db DBname  -u UName -p *** 
          --authenticationDatabase <admin/privileged> --host ip  
          --port portNo  --out foldName
于 2016-11-16T10:06:16.043 回答
6
mongodump   --authenticationDatabase admin -uroot -pyourpassword

这里 root 是用户名,yourpassword 是您的密码。

此命令将备份/转储当前目录中的所有数据库备份。

于 2020-04-29T22:44:41.917 回答
4

如果使用 --authenticationDatabase admin 仍然出现相同的错误,则可能是您的用户名和密码不正确。尝试添加具有适当角色的用户 db.createUser() (我也授予了写权限)

比运行以下命令:(如果您在本地运行,请忽略 -h)

 mongodump -h <ip>:<port_number> -d db_name -u newUser -p newPassword -o /home/mongodump/

希望这可以帮助...

于 2016-09-26T17:01:26.113 回答
4

用于转储和恢复

mongodump --db nameDatabase --username userName --password password --authenticationDatabase admin --out mongodb\
mongorestore --db nameDatabase --username userName --password password --authenticationDatabase admin <path backup> --drop
于 2016-04-18T14:50:57.023 回答
3

以下步骤在 MongoDB 3.2 上对我有用:

  1. 当然,请检查您的管理员用户名和密码是否正确。您可以使用 mongo shell 执行此操作:

蒙哥

使用管理员 db.auth("admin", "yourpassword")

如果返回 1,则密码正确。

  1. 然后将角色“备份”添加到您的管理员(或确保已添加此角色)。db.grantRolesToUser("admin", [{ role: "backup", db: "admin" }])

  2. 最后是 mongodump 命令。当我尝试将密码作为参数传递时,它对我不起作用。而是这样做:

mongodump --username admin --authenticationDatabase admin --db yourmongodatabase

然后在提示时添加您的密码。

这对我有用...

于 2017-04-20T09:10:10.287 回答
2

就我而言,mongodump没有正确处理密码。解决方案是转义密码文字。

这不起作用:

mongodump -p my$password -o <output directory>

这确实有效:

mongodump -p 'my$password' -o <output directory>

于 2019-11-20T20:46:49.137 回答
2

在密码周围使用signle 引号。如果您在密码中使用任何特殊字符。这将解决您的问题。使用以下命令。

mongodump -d 数据库名 -u 用户名 -p '密码' --out 目录名

于 2018-03-05T11:52:27.890 回答
1

userAdminAnyDatabase 不足以在所有数据库上执行 mongodump,这就是您收到此错误的原因。您将需要一个具有以下特性的超级用户:

userAdminAnyDatabase
readWriteAnyDatabase
clusterAdmin

在所有数据库上运行 mongodump 的权限。

或者您只需要“备份”权限

db.grantRolesToUser('username', [{
  role: 'backup',
  db: 'name of ur authentication db'
}])
于 2020-03-20T05:22:54.057 回答
0

如果您使用该--uri选项,则需要将authSource=admin作为参数添加到连接字符串(假设您的用户在 admin 数据库中)

mongodump --uri="mongodb://user:pass@host1:27017,host2:27017,host3:27017/?replicaSet=rs0"

变成:

mongodump --db=test --uri="mongodb://user:pass@host1:27017,host2:27017,host3:27017/?replicaSet=rs0&authSource=admin"
于 2020-03-02T08:18:03.343 回答
0

尝试从 mLab 转储我的数据库信息时,我遇到了同样的问题。发生这种情况是因为我在2.x本地和3.xmLab 中有 mongo。将我的本地 mongo 升级到与 mLab 相同的主要版本允许我进行转储,从而解决了问题。

于 2018-07-29T14:43:49.723 回答
-1

如果您使用的是 mLab,则可能是您本地 mongo 中的版本与 mLab 不匹配。默认情况下,Ubuntu 将安装 mongov2.x而 mLab 是v3.x. 您可以使用以下命令进行检查:

mongo --version

安装新的 mongo 版本:

  1. 删除旧的本地 mongo(小心,它可能会删除所有本地数据库
sudo apt remove mongo-clients mongodb
  1. 导入包管理系统使用的公钥。
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv D68FA50FEA312927
  1. 为 MongoDB 创建一个列表文件。

    • Ubuntu 14.04
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
  • Ubuntu 16.04
echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
  1. 安装 MongoDB 包
sudo apt-get install -y mongodb-org

参考:https ://docs.mongodb.com/v3.2/tutorial/install-mongodb-on-ubuntu/

现在您可以使用以下命令转储数据库:

mongodump -h <host>:<port> -d <database-name> -u <user> -p <password> -o <output directory>
于 2019-05-13T02:13:52.320 回答