【问题标题】:Jaspersoft Studio MongoDB connection authentication failureJaspersoft Studio MongoDB 连接认证失败
【发布时间】:2015-12-02 11:45:04
【问题描述】:

我正在尝试将 Jaspersoft Studio 6.2.0 连接到 MongoLab 上托管的 MongoDB 数据库(mongod 版本:3.0.7)。

使用连接 URI:

 mongodb://ds012345-a0.mongolab.com:12345,ds012345-a1.mongolab.com:12345/mydb?replicaSet=rs-ds012345

测试适配器时出现以下异常:

net.sf.jasperreports.engine.JRException: com.mongodb.CommandFailureException: { "serverUsed" : "ds012345-a0.mongolab.com:12345" , "ok" : 0.0 , "errmsg" : "auth failed" , "code" : 18}
    at com.jaspersoft.mongodb.connection.MongoDbConnection.test(MongoDbConnection.java:162)
    at com.jaspersoft.mongodb.adapter.MongoDbDataAdapterService.test(MongoDbDataAdapterService.java:93)
    at com.jaspersoft.studio.data.wizard.AbstractDataAdapterWizard$3.runOperations(AbstractDataAdapterWizard.java:162)
    at com.jaspersoft.studio.utils.jobs.CheckedRunnableWithProgress$1.run(CheckedRunnableWithProgress.java:59)
    at java.lang.Thread.run(Thread.java:745)
Caused by: com.mongodb.CommandFailureException: { "serverUsed" : "ds012345-a0.mongolab.com:12345" , "ok" : 0.0 , "errmsg" : "auth failed" , "code" : 18}
    at com.mongodb.CommandResult.getException(CommandResult.java:76)
    at com.mongodb.CommandResult.throwOnError(CommandResult.java:131)
    at com.mongodb.DBPort$NativeAuthenticator.authenticate(DBPort.java:652)
    at com.mongodb.DBPort.authenticate(DBPort.java:364)
    at com.mongodb.DBPort.checkAuth(DBPort.java:375)
    at com.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:291)
    at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:271)
    at com.mongodb.DBCollectionImpl.find(DBCollectionImpl.java:84)
    at com.mongodb.DB.command(DB.java:317)
    at com.mongodb.DB.command(DB.java:296)
    at com.mongodb.DB.command(DB.java:371)
    at com.mongodb.DB.command(DB.java:243)
    at com.mongodb.DB.command(DB.java:397)
    at com.jaspersoft.mongodb.connection.MongoDbConnection.test(MongoDbConnection.java:158)
    ... 4 more

【问题讨论】:

  • 您没有在连接字符串中传递用户名和密码
  • 我在下面的输入字段中输入了它们,而不是在连接字符串中。
  • 您是否尝试使用连接字符串传递凭据?
  • 刚试过。同样的错误。

标签: mongodb mlab jaspersoft-studio


【解决方案1】:

问题在于MongoDB version 3.0 中添加的SCRAM-SHA-1 身份验证机制。

正如JasperReports Server issue中提到的,解决方法是通过替换文件来更新MongoDB Java驱动:

Jaspersoft Studio-6.2.0.final\configuration\org.eclipse.osgi\29\0\.cp\lib\mongo-java-driver-2.12.3.jar

在这里找到一个:https://github.com/mongodb/mongo-java-driver/releases/download/r2.13.2/mongo-java-driver-2.13.2.jar

使用 URI 中的凭据,连接成功。

【讨论】:

  • 您好弗朗西斯,感谢您的回答。但是,似乎每当启动 Jaspersoft Studio 时,旧驱动程序都会再次出现在文件夹中(因此被使用)。你也遇到过这个问题吗?
  • 好的,知道了。文件mongo-java-driver-2.13.2.jar 文件必须重命名为原始mongo-java-driver-2.12.3.jar Jasper 文件名。感谢您的帮助!
  • @MichaëlPerrin 嘿伙计,你知道如何连接到 mongodb atlas 数据库,特别是如何在 Jaspersoft Studio 中为 MongoDB 连接提供 URI
  • 对不起@oshan2csd 我不知道。实际上我什至不记得那个问题:D
猜你喜欢
  • 2021-04-27
  • 2018-01-16
  • 1970-01-01
  • 2016-07-21
  • 1970-01-01
  • 2017-02-11
  • 2011-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多