mongdb3.0用户验证问题

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: <p>1、  用户验证方式更改:</p> <p>Mongodb2.6的默认用户验证方式是:MONGODB-CR</p> <p>Mongodb3.0的默认用户验证方式是:SCRAM-SHA-1</p> <p> </p> <p>因为新的验证方式在spring和java中还有一些问题,因此现在项目中3.0的数据库依旧使用之前的验证方式。</p> <p> </p> <p>把3.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的配置如下:

<?xml version="1.0" encoding="UTF-8"?>

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

    xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xmlns: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 the Mongoinstance -->

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

       <mongo:client-options write-concern="SAFE"/> 

    </mongo:mongo-client> 

 

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

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

       <constructor-arg name="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;

  }

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
9月前
|
SQL 关系型数据库 数据库
OceanBase数据库常见问题之upgrade_post想要不显示明文密码如何解决
OceanBase 是一款由阿里巴巴集团研发的企业级分布式关系型数据库,它具有高可用、高性能、可水平扩展等特点。以下是OceanBase 数据库使用过程中可能遇到的一些常见问题及其解答的汇总,以帮助用户更好地理解和使用这款数据库产品。
|
7月前
|
缓存 监控 NoSQL
若依修改----监控相关,主要包括在线用户,数据监控,服务监控,缓存监控,缓存列表,缓存监控有助于帮我们搞清楚redis的缓存情况,数据监控的密码控制台管理用户名和密码在application-dru
若依修改----监控相关,主要包括在线用户,数据监控,服务监控,缓存监控,缓存列表,缓存监控有助于帮我们搞清楚redis的缓存情况,数据监控的密码控制台管理用户名和密码在application-dru
|
Java 数据库 数据安全/隐私保护
75分布式电商项目 - CAS数据源设置(从数据库中查询用户名密码登录)
75分布式电商项目 - CAS数据源设置(从数据库中查询用户名密码登录)
58 0
|
NoSQL Redis 数据库
若依系统分离版去除redis数据库
若依系统分离版去除redis数据库
1075 1
|
NoSQL 网络协议 测试技术
海量用户通讯系统-Redis 用户验证分析|学习笔记
快速学习海量用户通讯系统-Redis 用户验证分析
海量用户通讯系统-Redis 用户验证分析|学习笔记
|
Web App开发 存储 安全
数千用户将包含敏感数据的 Firefox cookie 数据库提交至 GitHub
数千用户将包含敏感数据的 Firefox cookie 数据库提交至 GitHub
136 0
数千用户将包含敏感数据的 Firefox cookie 数据库提交至 GitHub
|
NoSQL MongoDB 算法
|
Java 关系型数据库 数据库连接
MySQL基础操作之数据库创建、用户操作
目录 说明 创建数据库 用户操作 版本记录 说明 数据库版本: 8.0.17 操作系统: MacBook Pro 客户端: Navicat 12 1. 创建数据库 1.
|
关系型数据库 MySQL 测试技术
菜鸟学习shiro之用数据库作为Realm的认证源实现登录,角色身份的判定和权限验证3
Maven的的依赖和第一篇是一样的副本直接用 上两篇讲的无论是内部类的封装领域还是配置文件的认证源,这篇开始讲最关心的数据库作为境界的认证源 这里使用的是四郎给我们提供的另一个内置的类JdbcRealm这个是连接数据库的一个内部类,话不多说了,具体的代码如下: import com.
1626 0

热门文章

最新文章