我正在尝试连接到 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/