mongodb - 尝试从 Fantom 脚本连接到 MongoLab 中托管的 MongoDB 时身份验证失败。怎么了?

标签 mongodb mlab robo3t fantom

我正在尝试连接到 MongoLab 中托管的远程 MongoDB v3.0.8使用Fantom v1.0.67 脚本。我使用的驱动程序是 afMongo v1.0.4。连接线为​​:

mongoClient := MongoClient(
    ActorPool(),
    `mongodb://mydbuser:mydbpassword@ds0#####.mongolab.com:#####/mymongodb`
)

请注意,占位符 mydbuser、mydbpassword 和 ##### 已替换为正确的值。当我从 shell 运行以下命令时,连接成功:

mongo ds0#####.mongolab.com:#####/mymongodb -u mydbuser -p mydbpassword

但是从 Fantom 脚本中,我收到此错误:

afMongo::MongoCmdErr: Command 'authenticate' failed. MongoDB says: auth failed
  afMongo::Operation.runCommand (Operation.fan:36)
  afMongo::Operation.runCommand (Operation.fan)
  afMongo::Connection$.authenticate (Connection.fan:34)
  afMongo::TcpConnection.authenticate (Connection.fan:51)
  afMongo::ConnectionManagerPooled.checkOut (ConnectionManagerPooled.fan:458)
  afMongo::ConnectionManagerPooled.leaseConnection (ConnectionManagerPooled.fan:320)
  afMongo::Cmd.run (Cmd.fan:71)
  afMongo::Database.runCmd (Database.fan:36)
  afMongo::MongoClient.runAdminCmd (MongoClient.fan:107)
  afMongo::MongoClient.buildInfo (MongoClient.fan:64)
  afMongo::MongoClient.startup (MongoClient.fan:119)
  afMongo::MongoClient.makeFromUri$ (MongoClient.fan:41)
  afMongo::MongoClient.makeFromUri$ (MongoClient.fan)
  afMongo::MongoClient.makeFromUri (MongoClient.fan:38)

我也尝试过 Robomongo v0.8.4,结果类似:弹出对话框显示...

  • 已成功连接到 ds0#####.mongolab.com:#####
  • 授权失败

我运行了 Fantom 脚本以及 Robomongo,成功针对本地托管的 MongoDB v2.6.3 和 v3.0.8 数据库进行连接和身份验证。

我的 Java 版本是 Java(TM) SE 运行时环境(内部版本 1.8.0_05-b13)

我不知道 Robomongo 或 Fantom/afMongo 是否依赖于过时的 Java 或系统库。

请问出了什么问题或者我应该检查什么?

最佳答案

Robomongo v0.8.4 和 afMongo 1.0.4 中的身份验证失败是由于 MongoDB v3 called SCRAM-SHA-1 中的新身份验证机制造成的.

afMongo 已更新,通过 SASL 实现了 SCRAM-SHA-1。它自动检测 Mongo v3 数据库并切换身份验证协议(protocol),在需要时回退到旧版 MONGODB-CR - 请参阅 this commit .

这些更改尚未发布,因为它依赖于仅在 Fantom 1.0.68 中可用的新方法 Buf.pbk(...) - 该方法本身尚未发布。更新后的 afMongo v1.0.6 将在 Fantom 1.0.68 发布后立即发布。

您可以从源代码编译 Fantom 1.0.68 和 afMongo 1.0.6,但说实话,最简单的修复(同时)是仅使用 v2.6 MongoDB 数据库。

请注意,如果需要,MongoChef GUI 客户端可以针对 MongoDB v3 数据库进行身份验证。

关于mongodb - 尝试从 Fantom 脚本连接到 MongoLab 中托管的 MongoDB 时身份验证失败。怎么了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34486392/

相关文章:

java - 意外输出 java.lang.NoSuchMethodError : while building project

mongodb - MongoDB 是否支持 soundex 或模糊匹配?

java - 无法插入新创建的 mongolab 数据库

arrays - 如何在 Robo3T 中将结果从一个查询传递到另一个查询

mongodb - 如何将 mongo 中的特定查询导出到 csv?

windows - Mongodb Windows 安装程序 "admin web console waiting for connections on port 28017"错误

javascript - NodeJS客户端中MongoDB中的BulkWriteError

node.js - 使用nodeJS Strapi连接mLab mongoDB数据库

php - 连接到 mongodb 服务器时为 "Invalid ns"

mongodb - Robo 3T Sasl失败