MongoDB:不支持 PLAIN 方法

Posted

技术标签:

【中文标题】MongoDB:不支持 PLAIN 方法【英文标题】:MongoDB: PLAIN method not suported 【发布时间】:2017-06-10 16:12:38 【问题描述】:

我在尝试部署我的战争神器时收到此消息。我的应用程序正在使用休眠 ogm,它在部署时尝试构建持久性上下文。我收到的消息是:

org.hibernate.service.spi.ServiceException:OGM000071:无法启动数据存储提供程序原因:org.hibernate.service.spi.ServiceException:OGM000071:无法启动数据存储提供程序原因:org.hibernate.HibernateException:OGM001214 :无法连接到 MongoDB 实例:在等待与 ReadPreferenceServerSelectorreadPreference=primary 匹配的服务器时,在 30000 毫秒后超时。集群状态的客户端视图是 type=UNKNOWN, servers=[address=mongo:27017, type=UNKNOWN, state=CONNECTING, exception=com.mongodb.MongoSecurityException: Exception authenticationing MongoCredentialmechanism=PLAIN, userName='living ',source='lvdb',password=,mechanicalProperties=,由 com.mongodb.MongoCommandException:命令失败,错误 2:服务器 mongo:27017 上的“不支持的机制 PLAIN”。完整的响应是 \"supportedMechanisms\" : [\"MONGODB-CR\", \"MONGODB-X509\", \"SCRAM-SHA-1\"], \"ok\" : 0.0, \"errmsg \" : \"Unsupported mechanism PLAIN\", \"code\" : 2, \"codeName\" : \"BadValue\" ] 原因:com.mongodb.MongoTimeoutException: 等待 30000 毫秒后超时对于匹配 ReadPreferenceServerSelectorreadPreference=primary 的服务器。集群状态的客户端视图是 type=UNKNOWN, servers=[address=mongo:27017, type=UNKNOWN, state=CONNECTING, exception=com.mongodb.MongoSecurityException: Exception authenticationing MongoCredentialmechanism=PLAIN, userName='living ',source='lvdb',password=,mechanicalProperties=,由 com.mongodb.MongoCommandException:命令失败,错误 2:服务器 mongo:27017 上的“不支持的机制 PLAIN”。完整的响应是 \"supportedMechanisms\" : [\"MONGODB-CR\", \"MONGODB-X509\", \"SCRAM-SHA-1\"], \"ok\" : 0.0, \"errmsg \" : \"不支持的机制 PLAIN\", \"code\" : 2, \"codeName\" : \"BadValue\" ]"

我需要做什么才能使用其他机制?

【问题讨论】:

【参考方案1】:

您必须指定属性hibernate.ogm.mongodb.authentication_mechanism(请参阅here)。

您想使用哪种身份验证机制?我们可能还不支持它,但如果您让我们知道您的偏好,我们可以尝试使其快速运行。

【讨论】:

据我所知,mongodb 上有三种身份验证机制(user:passwordusing a X509 certificate,并使用第三种kerberos)。我必须说我们使用的是单个user:password,所以我可以使用机制PLAINSCRAM-SHA1CR。我可以在 mongodb shell 上使用 db.auth() 进行身份验证,但是,当我尝试使用 mongo 驱动程序或 hibernate ogm 对用户进行身份验证时,我不太明白失败的原因。【参考方案2】:

对于 MongoDB,默认支持的机制是“SCRAM-SHA-1”。因此,在连接时,您需要指定此机制。通过 spring-data 连接到 MongoDB 时,我看到了同样的错误。虽然我没有为 mongo 进行任何特殊配置,但我尝试的第一个也是显而易见的选择是 PLAIN 身份验证机制。最后,使用 SCRAM-SHA-1 解决了它。 对于 Spring-data,代码如下所示:

MongoCredential mongoCredential = MongoCredential.createScramSha1Credential(mongoUser, mongoDB, mongoPass.toCharArray());

希望这会有所帮助。

【讨论】:

以上是关于MongoDB:不支持 PLAIN 方法的主要内容,如果未能解决你的问题,请参考以下文章

内容类型'text/plain;charset = UTF-8'在RestController类中的spring boot中不支持错误

python日志,支持彩色打印和文件大小切片写入和写入mongodb

System.NotSupportedException: '$project 或 $group 不支持 document。' mongodb

NestJS:Mongodb驱动不支持此操作

此客户端所连接的 MongoDB 集群不支持会话-springboot-mongodb-transactions

Spring MongoDB BasicQuery不支持投影