【问题标题】:Can not connect with Casbah but it works with ReactiveMongo无法与 Casbah 连接,但它适用于 ReactiveMongo
【发布时间】:2015-05-22 08:29:27
【问题描述】:

我在使用 Casbah 连接到我的 mongo 数据库时遇到问题,但它在 ReactiveMongo 上运行良好。这是与 Casbah 一起使用的代码: val client = MongoClient(MongoClientURI("my_uri")) 和 ReactiveMongo:this.driver(actorSystem).connection(MongoConnection.parseURI("my_uri"))。我在使用 Casbah 时遇到的错误是:{ "serverUsed" : "host:27017" , "ok" : 0.0 , "errmsg" : "auth failed" , "code" : 18}。知道这可能来自哪里吗?

【问题讨论】:

  • 您收到“身份验证失败”消息 - 您如何设置 mongodb 凭据?
  • 两种方式都在 mongo uri 中设置如下:mongodb://login:password@host:port/database
  • 什么版本的MongoDB和什么版本的Casbah?
  • Mongodb 2.6.8 版和 Casbah 2.8.1 版
  • db.getUser(<login>) 输出什么? docs.mongodb.org/manual/reference/method/db.getUser

标签: mongodb scala casbah reactivemongo


【解决方案1】:

如果不使用 MongoDB 服务器的默认值,您可能需要显式设置 authMechanism 属性。

在 MongoDB 3.0 之前,默认的身份验证机制是 MONGODB-CR,即“MongoDB Challenge-Response”协议。在 MongoDB 3.0 中,默认值更改为 SCRAM-SHA-1

如果未设置 authMechanism,则底层 Java 驱动程序将根据服务器版本选择最安全的可用机制。

尝试将您的连接字符串更新为:

mongodb://login:password@host:port/database?authMechanism=MONGODB-CR

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-02
    • 2013-06-15
    • 2022-11-10
    相关资源
    最近更新 更多