mongodb添加权限认证后链接失败

修补MongoDB未授权访问漏洞,需要给数据添加权限验证,在添加上用户密码后,连接数据库报如下错误:

[[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'] 16:11:57 ERROR (LoginLoggerDaoImpl.queryPage:85) - 查询数据库:Failed to authenticate to database [sgccoa], username = [amsdb], password = [a*******6]
org.springframework.data.mongodb.CannotGetMongoDbConnectionException: Failed to authenticate to database [sgccoa], username = [amsdb], password = [a*******6]
        at org.springframework.data.mongodb.core.MongoDbUtils.doGetDB(MongoDbUtils.java:115)
        at org.springframework.data.mongodb.core.MongoDbUtils.getDB(MongoDbUtils.java:75)
        at org.springframework.data.mongodb.core.SimpleMongoDbFactory.getDb(SimpleMongoDbFactory.java:118)
        at org.springframework.data.mongodb.core.SimpleMongoDbFactory.getDb(SimpleMongoDbFactory.java:107)
        at org.springframework.data.mongodb.core.MongoTemplate.getDb(MongoTemplate.java:1258)
        at org.springframework.data.mongodb.core.MongoTemplate.execute(MongoTemplate.java:387)
        at org.springframework.data.mongodb.core.MongoTemplate.count(MongoTemplate.java:591)
        at org.springframework.data.mongodb.core.MongoTemplate.count(MongoTemplate.java:582)

经查证,此错误与使用连接mongodb的驱动版本有关,当前数据库版本为3.0.7,使用的mongo-java-driver版本是2.10.1,mongo-java-driver-2.10.1.jar并不支持3.0的数据库,在不开启权限验证的时候使用并无问题,开启权限验证后报以上错误。

          <dependency>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-mongodb</artifactId>
                <version>1.2.1.RELEASE</version>
            </dependency>
                     <dependency>
                <groupId>org.mongodb</groupId>
                <artifactId>mongo-java-driver</artifactId>
                <version>2.10.1</version>
            </dependency> 

要解决此问题需要将此jar包的版本更新到支持mongodb3.0以上的版本,在官网上有对应版本的兼容性示意图:

 可以看出至少需要2.13,只需要将mongo-java-driver更新到2.13或以上可以了

注1:因为spring-data-mongodb是1.2.1.RELEASE,只能更新到2.13或2.14,如果更新到3.0或以上,会因为spring-data-mongodb不支持出现其他异常.

注2:因为spring使用的是3.1.0.RELEASE系列,对spring-data-mongodb的支持只到了1.3,虽然mongo-java-driver-2.14.3.jar对应的是spring-data-mongodb-1.10.1.jar,也只能使用原来的包,更新spring-data-mongodb会导致spring的一系列包都必须更新。spring-data-mongodb.1.6以上的版本需要配置的spring的版本需要4.0以上

原文地址:https://www.cnblogs.com/breeze-zZ/p/12982640.html