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

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

org.hibernate.service.spi.ServiceException:OGM000071:无法启动数据存储提供程序原因:org.hibernate.service.spi.ServiceException:OGM000071:无法启动数据存储提供程序原因:org.hibernate.HibernateException:OGM001214 :无法连接到 MongoDB 实例:在等待与 ReadPreferenceServerSelector{readPreference=primary} 匹配的服务器时,在 30000 毫秒后超时。集群状态的客户端视图是 {type=UNKNOWN, servers=[{address=mongo:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSecurityException: Exception authenticationing MongoCredential{mechanism=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 毫秒后超时对于匹配 ReadPreferenceServerSelector{readPreference=primary} 的服务器。集群状态的客户端视图是 {type=UNKNOWN, servers=[{address=mongo:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSecurityException: Exception authenticationing MongoCredential{mechanism=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\" }}}]"}}

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

【问题讨论】:

    标签: mongodb hibernate


    【解决方案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());
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-12
      • 2021-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-15
      • 2020-04-23
      相关资源
      最近更新 更多