无法使用--db创建备份mongodump。验证失败

时间:2015-08-13 15:59:40

标签: mongodb authentication mongodump

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

mongodump --username bacUser --password 12345

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

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

它给了我这个错误:

  

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

13 个答案:

答案 0 :(得分:18)

这应该有用。

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

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

答案 1 :(得分:11)

mongodump --host <host-ip> --port 27017 --db <database>  --authenticationDatabase admin --username <username> --password <password> --out ./Documents/

经过所有测试,我发现上面的工作命令可以从mongdb中转储。

答案 2 :(得分:4)

如果您仍然使用--authenticationDatabase admin获得相同的错误,那么您的用户名和密码可能不正确。 尝试添加具有适当角色的用户db.createUser()(我也提供了写入权限)

运行以下命令:(如果你在本地运行,则忽略-h)

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

希望这会有所帮助......

答案 3 :(得分:4)

mongodump --collection coll_name --db DBname  -u UName -p *** 
          --authenticationDatabase <admin/privileged> --host ip  
          --port portNo  --out foldName

答案 4 :(得分:3)

mongodump   --authenticationDatabase admin -uroot -pyourpassword

此处root是用户名,而yourpassword是您的密码。

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

答案 5 :(得分:2)

以下步骤适用于MongoDB 3.2:

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

    使用admin db.auth(&#34; admin&#34;,&#34; yourpassword&#34;)

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

    1. 然后添加角色&#34; backup&#34;到您的管理员(或确保已添加此角色)。 db.grantRolesToUser(&#34; admin&#34;,[{role:&#34; backup&#34;,db:&#34; admin&#34;}])

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

    3. mongodump --username admin --authenticationDatabase admin --db yourmongodatabase

      然后在提示时添加密码。

      这对我有用......

答案 6 :(得分:2)

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

mongodump -d database_name -u userName -p'password'--out directory_name

答案 7 :(得分:1)

用于转储和恢复

mongodump --db nameDatabase --username userName --password password --authenticationDatabase admin --out mongodb\
mongorestore --db nameDatabase --username userName --password password --authenticationDatabase admin <path backup> --drop

答案 8 :(得分:1)

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

这不起作用:

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

这确实有效:

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

答案 9 :(得分:1)

userAdminAnyDatabase不足以对所有数据库执行mongodump,这就是为什么您会收到此错误。您将需要具有以下权限的超级用户

userAdminAnyDatabase
readWriteAnyDatabase
clusterAdmin

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

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

db.grantRolesToUser('username', [{
  role: 'backup',
  db: 'name of ur authentication db'
}])

答案 10 :(得分:0)

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

答案 11 :(得分:0)

如果您正在使用mLab,则可能是您本地mongo中的版本与mLab不匹配。默认情况下,Ubuntu将安装mongo v2.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>

答案 12 :(得分:0)

如果使用--uri选项,则需要向连接字符串中添加authSource=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&authSoource=admin"