mongdb3.0用户验证问题

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介: <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
目录
相关文章
|
2月前
|
SQL 关系型数据库 数据库
OceanBase数据库常见问题之upgrade_post想要不显示明文密码如何解决
OceanBase 是一款由阿里巴巴集团研发的企业级分布式关系型数据库,它具有高可用、高性能、可水平扩展等特点。以下是OceanBase 数据库使用过程中可能遇到的一些常见问题及其解答的汇总,以帮助用户更好地理解和使用这款数据库产品。
|
8月前
|
NoSQL 安全 MongoDB
Mongo DB之用户与权限管理、备份与恢复管理以及客户端工具的使用
MongoDB是一款灵活且高性能的文档型数据库,具有可扩展性和强大的查询功能,适用于各种应用场景。
637 1
|
7月前
|
Java 数据库 数据安全/隐私保护
75分布式电商项目 - CAS数据源设置(从数据库中查询用户名密码登录)
75分布式电商项目 - CAS数据源设置(从数据库中查询用户名密码登录)
26 0
|
关系型数据库 MySQL 测试技术
菜鸟学习shiro之用数据库作为Realm的认证源实现登录,角色身份的判定和权限验证3
Maven的的依赖和第一篇是一样的副本直接用 上两篇讲的无论是内部类的封装领域还是配置文件的认证源,这篇开始讲最关心的数据库作为境界的认证源 这里使用的是四郎给我们提供的另一个内置的类JdbcRealm这个是连接数据库的一个内部类,话不多说了,具体的代码如下: import com.
1583 0
|
XML 数据库 数据格式
Confluence 6 数据库整合的方法 1:基本流程
步骤 1:对你的插件进行记录 对你近期在 Confluence 中安装和启用的插件进行记录,这你可以在后期对插件进行重新安装或者调整。
1526 0
|
MySQL 关系型数据库 数据库
记一次MySQL数据库拒绝访问的解决过程
记一次MySQL数据库拒绝访问的解决过程 最近在折腾wordpress博客,连接MySQL数据库时提示拒绝访问。经过排查,解决了问题。这里记录下解决问题的方案,以及解决的思路。如有遇到类似问题的读者可以参考下。
4160 0
|
网络协议 数据库 数据安全/隐私保护