mongodump从远程节点 - 无法使用机制“SCRAM-SHA-256”进行身份验证

11
尝试从远程节点获取转储并出现以下错误:

失败:无法创建会话:无法连接到服务器: connection():auth 错误:sasl 会话错误:无法使用机制“SCRAM-SHA-256”进行身份验证:(AuthenticationFailed) 身份验证失败。

Error Screenshot

尝试了两种方法从远程节点中获取转储。但是在这两种方法中都遇到了相同的错误。

# Method 1
mongodump -h remoteip@port -u xxx -p xxx --db xxx --authenticationDatabase admin

# Method 2
mongodump --uri "mongodb://username:password@remoteip:port/db?authSource=admin"

如何解决这个问题?


凭证错误或身份验证来源错误,或用户不存在,请使用服务器日志确定其原因。 - D. SM
2
嗨,我有同样的问题。我使用与MongoDB Compass相同的连接字符串,但mongodump失败了。你是如何解决这个问题的? - ClubberLang
3
也许使用选项 --authenticationDatabase admin 可以解决您的问题。https://github.com/stefanprodan/mgob/issues/104 - Mr_Thorynque
6个回答

19

4
我相信这是正确的答案。你需要用 --authenticationDatabase 指定 authSource - thelastshadow
--authenticationDatabase admin身份验证数据库为admin。 - MartianMartian
非常感谢您的回答!这个错误信息让调试变得非常困惑。 请注意,如果您在设置Mongo时创建了一个新的数据库用于数据条目,您将需要使用该数据库。admin是默认的。 - undefined

7

我也遇到了同样的问题,我的密码中包含特殊字符。尝试使用单引号作为密码:

-p 'my_password'

6

1.如果你在使用mongodump命令的URI时,--authenticationDatabase admin选项等同于?authSource=admin

mongodump --uri "mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]"

示例网址:

mongodump --uri "mongodb+srv://username1:password1@host1/db1?authSource=admin" 

3

我曾经有相同的问题,通过在密码中使用单引号来解决它,如下所示:

   --password 'secret'

令人惊讶的是,这在Spring框架配置文件中起作用了。 - Oliver Soria

0

我曾经也遇到过同样的问题,我的解决方法是:

mongodump --uri "mongodb+srv://username:password@yourmongodbclustersourceurl" --archive \
mongorestore --uri "mongodb+srv://username:password@yourmongodbclusterdestinationurl" --archive \
--nsExclude "admin.system.*"

不用多说,你只需要在这个公式中更改你的用户名、密码和URL,然后轻松搞定。祝你好运!

0

我曾经遇到过这个问题,并通过删除特殊字符来解决它。例如,我有一个密码为abc@123。连接字符串应该是

mongodb://myuser:abc@123@127.0.0.0:27017/mydb?authSource=admin

如我们所见,出现了一个问题,因为“@”是连接字符串元素分隔符的特殊字符,我不得不用“%40”替换它,所以我的密码变成了“abc%40123”。根据我使用的控制台(PowerShell,命令提示符,Git Bash等),它生成了带有错误或正确响应的备份。通过删除“@”,一切都正常工作。
可能有一些配置此加密的方法,但在我的情况下,我更喜欢改变密码。我希望对某人有用,问候。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接