当我在MongoDB(版本3)中创建所有数据库的备份时:
mongodump --username bacUser --password 12345
没关系。但是当我尝试创建所选数据库的备份时:
mongodump --username bacUser --password 12345 --db test
它给了我这个错误:
失败:连接到数据库服务器时出错:SASL身份验证步骤中服务器返回错误:身份验证失败。
答案 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:
蒙戈
使用admin db.auth(&#34; admin&#34;,&#34; yourpassword&#34;)
如果返回1,则密码正确。
然后添加角色&#34; backup&#34;到您的管理员(或确保已添加此角色)。 db.grantRolesToUser(&#34; admin&#34;,[{role:&#34; backup&#34;,db:&#34; admin&#34;}])
最后,mongodump命令。当我试图将密码作为参数传递时,它对我不起作用。而是这样做:
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版本:
sudo apt remove mongo-clients mongodb
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv D68FA50FEA312927
为MongoDB创建一个列表文件。
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
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
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"