mongdb3.0用户验证问题

1、  用户验证方式更改:

Mongodb2.6的默认用户验证方式是:MONGODB-CR

Mongodb3.0的默认用户验证方式是:SCRAM-SHA-1

 

因为新的验证方式在spring和java中还有一些问题,因此现在项目中3.0的数据库依旧使用之前的验证方式。

 

把3.0的用户验证改为MONGODB-CR,过程如下:

(1)、进入mongoshell,mongodb的bin目录下执行mongo命令:./mongo

  (2)、创建admin数据库,并创建一个用户,指定用户密码和角色:

   use admin

   db.createUser({“user”:”admin”,”pwd”:”admin”,”roles”:[“root”]})

(3)、更改用户验证方式:(注意必须先创建用户才能成功操作这一步)

   var schema=db.system.version.findOne({“_id”:”authSchema”})

    回车后再输入:

    schema.currentVersion=3

    回车后继续输入:

    db.system.version.save(schema)

    回车

(4)、删除刚刚创建的用户:

   db.dropUser(“admin”)

(5)、再次创建一个新的用户:

db.createUser({“user”:”admin”,”pwd”:”admin”,”roles”:[“root”]})

 

2、  Spring配置用户验证:

在spring整合mongodb3.0的jar包中,旧的一些用户验证方式已经被抛弃,因此需要使用新的配置才能成功连接并使用3.0数据库。需要mongo-java-driver-3.0.2.jar和spring-mongo-data-1.7.2.jar或者更高版本的jar。

 

Spring中关于mongodb3.0的配置如下:

<?xmlversion="1.0"encoding="UTF-8"?>

<beansxmlns="http://www.springframework.org/schema/beans"

    xmlns:xsi=http://www.w3.org/2001/XMLSchema-instancexmlns:p="http://www.springframework.org/schema/p"

    xmlns:mongo="http://www.springframework.org/schema/data/mongo"

    xsi:schemaLocation="http://www.springframework.org/schema/beans     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

     http://www.springframework.org/schema/data/mongo

    http://www.springframework.org/schema/data/mongo/spring-mongo.xsd">

 

    <!-- Factory bean that creates theMongoinstance -->

    <mongo:mongo-clienthost="192.168.0.33"port="27017"credentials="aaa:aaa@aaa"id="mongo"> 

       <mongo:client-optionswrite-concern="SAFE"/> 

    </mongo:mongo-client> 

 

    <mongo:db-factory id="mongoDbFactory"dbname="admin"mongo-ref="mongo"/> 

    <beanid="mongoTemplate"class="org.springframework.data.mongodb.core.MongoTemplate"> 

       <constructor-argname="mongoDbFactory"ref="mongoDbFactory"/> 

    </bean>  

</beans>

 

3、  纯java代码中配置用户验证:

在mongo-java-driver的新驱动中,旧的(mongodb2.6)验证方法也已经被弃用,因此也必须更换新的代码进行验证,而且需要注意的是,在3.0.2.jar中,即便是用了新的方法验证,但是如果不把mongodb中的用户验证方式改回MONGODB-CR,那么依旧验证不通过,所以还必须改回MONGODB-CR才行,至于mongodb3.0.6以后的行不行就还不知道。

 

新的验证方法java代码如下:

ServerAddress sa = new ServerAddress(host, port);  

List<MongoCredential> mongoCredentialList = new ArrayList<MongoCredential>();  

mongoCredentialList.add(MongoCredential.createMongoCRCredential(username, database, password.toCharArray()));  

new MongoClient(sa, mongoCredentialList);  

示例:

public DB getMongoDB() {

   if (mongoDB == null) {

     try {

        ServerAddress sa = new ServerAddress("192.168.0.160",47017);

        List<MongoCredential>mongoCredentialList = new ArrayList<MongoCredential>();  mongoCredentialList.add(MongoCredential.createMongoCRCredential("aaa","aaa","aaa".toCharArray()));

        mongoDB = new MongoClient(sa,mongoCredentialList).getDB("admin");

     } catch (Exception e) {

        throw new RuntimeException("连接MongoDB数据库错误",e);

     }

   }

   return mongoDB;

  }

涂宗勋 CSDN认证博客专家 web安全 系统安全 安全架构
【若想不迷路,记得点关注,动动小手指,点点全是福】

6年java工作经验,现居湖北武汉,有过支付、OA、CA、OAUTH2等工作经验,现从事车联网行业。
爱好分享,个人博客blog.tzxcode.cn,微信tuzongxun,qq1160569243,欢迎来撩。
©️2020 CSDN 皮肤主题: 成长之路 设计师: Amelia_0503 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值