Auth尝试从Fantom脚本连接到MongoDB中托管的MongoDB失败。什么';怎么了?
我正在尝试使用v1.0.67脚本连接到托管在中的远程MongoDB v3.0.8。我使用的驱动程序是v1.0.4。连接线为:Auth尝试从Fantom脚本连接到MongoDB中托管的MongoDB失败。什么';怎么了?,mongodb,mlab,robo3t,fantom,Mongodb,Mlab,Robo3t,Fantom,我正在尝试使用v1.0.67脚本连接到托管在中的远程MongoDB v3.0.8。我使用的驱动程序是v1.0.4。连接线为: mongoClient := MongoClient( ActorPool(), `mongodb://mydbuser:mydbpassword@ds0#####.mongolab.com:#####/mymongodb` ) 请注意,占位符mydbuser、mydbpassword和#####被替换为正确的值。当我从shell运行以下命令时,连接成功
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:#####
- 授权失败
有什么问题,或者我应该检查什么?Robomongo v0.8.4和afMongo 1.0.4中的身份验证失败都是由于中的新身份验证机制造成的 afMongo已更新为
SCRAM-SHA-1
overSASL
。它自动检测Mongo v3数据库并切换身份验证协议,在需要时返回到较旧的MONGODB-CR
-请参阅
这些更改尚未发布,因为它依赖于一种新方法Buf.pbk(…)
,该方法仅在Fantom 1.0.68中可用,而Fantom 1.0.68本身尚未发布。Fantom 1.0.68发布后,将立即发布更新的afMongo v1.0.6
您可以从源代码处编译Fantom 1.0.68和afMongo 1.0.6,但老实说,最简单的修复方法(同时)是只使用v2.6 MongoDB数据库
注意,如果需要,GUI客户端可以针对MongoDB v3数据库进行身份验证