我正在尝试使用MongoLabv1.0.67脚本连接到Fantom中托管的远程MongoDB v3.0.8。我使用的驱动程序是afMongov1.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脚本,并通过本地托管的mongodb v2.6.3和v3.0.8数据库成功地连接和验证了robomongo。
我的Java版本是Java(TM)SE运行时环境(构建1.80y05-B13)
我不知道Robomongo或Faunt/AfMango是否依赖于Java或系统库已经过时了。
请问出什么事了,或者我该查什么?
最佳答案
robomongo v0.8.4和afmongo 1.0.4中的身份验证失败都是由于MongoDB v3 called SCRAM-SHA-1中的新身份验证机制造成的。
afmongo已经更新了SCRAM-SHA-1
overSASL
的实现。它自动检测mongo v3数据库并切换auth协议,在需要时返回到旧的MONGODB-CR
-参见this commit。
这些更改尚未发布,因为它依赖于fantom 1.0.68中提供的新方法Buf.pbk(...)
,而fantom1.0.68本身是未发布的。fantom 1.0.68发布后,将立即发布更新的afmongo v1.0.6。
您可以从源代码处编译fantom 1.0.68和afmongo1.0.6,但老实说,最简单的解决方案(同时)是只使用v2.6mongodb数据库。
注意,如果需要,MongoChefgui客户端可以针对mongodb v3数据库进行身份验证。
关于mongodb - Auth尝试从Fantom脚本连接到MongoLab中托管的MongoDB失败。怎么了?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34486392/