mongodb - Java MongoDB 客户端 : authentication failed when access to a server not configured to use an authentication

标签 mongodb mongodb-java

我已将 Java MongoDB 客户端配置为使用 MongoCredential。 不幸的是,当我访问未配置为使用身份验证的服务器时,我收到身份验证失败异常:

Caused by: com.mongodb.MongoCommandException: Command failed with error 18: 'Authentication failed.' on server …. The full response is { "ok" : 0.0, "code" : 18, "errmsg" : "Authentication failed." }

当服务器配置为使用身份验证和 Java MongoDB 客户端时,我确实预计会出现此异常,但在这种情况下不会。

是否可以将 Java MongoDB 客户端配置为在访问未配置为使用身份验证的服务器时不会失败?

最佳答案

恐怕不是,您的客户端不知道服务器是否启用了身份验证。
您的客户端连接代码应与服务器的身份验证参数相匹配,否则将失败。

在这种情况下,我所做的是创建一个连接函数,它接受 auth 凭据,当传递凭据时,使用它们 - 创建带有 auth 凭据的连接,否则不 - 创建没有 auth 凭据的连接。

在这种情况下,您应该知道哪个服务器启用了身份验证

关于mongodb - Java MongoDB 客户端 : authentication failed when access to a server not configured to use an authentication,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38322610/

相关文章:

java - 如何将控制台输出打印到 JTextArea?

javascript - mongoskin 和 mongodb 副本集群的连接问题

mongodb - 如何为hadoop最新版本(1.2.1)构建MongoDB连接器

java - 在 MongoDB 中打开连接的 SocketTimeout

node.js - 如何以不同的用户级别登录我的 Angular

javascript - 如何从文档中检索与特定 ID 匹配的数组?

mongodb - MongoDB 的 MMAPV1、WiredTiger 或 In-Memory StorageEngine 如何选择?

java - 如何通过Java驱动在MongoDB中创建复合索引?

java - 如何在 MongoDb 中插入带点字段的嵌入文档

mongodb - 使用 Mongodb 的 java 驱动程序,如何在同一字段上搜索多个值?