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的配置如下:
<?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;
}
mongdb3.0用户验证问题的更多相关文章
- OAuth2.0 用户验证授权标准 理解
OAuth2.0是一套标准. 一.问题 这个标准解决了这样的一个问题. 允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. ...
- spring4.0整合mongodb3.0.4项目实践(用户验证)
我们的项目用到了spring框架和mongdb数据库,随着mongodb升级到3.0已有半年时间,我们也开始随之升级,但是3.0的用户验证有所更改,导致原来的很多配置无法再用. 经过几天的尝试后,终于 ...
- 使用mongo-java-driver3.0.2.jar和mongodb3.0在java代码中的用户验证4
以下是使用mongo-java-driver3.0.2.jar和mongodb3.0.4在java代码中的用户验证: ServerAddress sa = new ServerAddress(host ...
- mongodb3.0分片及java代码连接操作测试(开启用户验证)
最近抽时间搭建了一下mongodb简单的分片,整个过程还算是蛮顺利,只不过在用户验证这一块遇到了一些问题,好在最后终于搞定. 一.服务器搭建过程: 1.安装四个mongodb:一个作为config.一 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(65)-MVC WebApi 用户验证 (1)
系列目录 前言: WebAPI主要开放数据给手机APP,其他需要得知数据的系统,或者软件应用,所以移动端与系统的数据源往往是相通的. Web 用户的身份验证,及页面操作权限验证是B/S系统的基础功能, ...
- SQLSERVER误删除了Windows登录用户验证方式使用Windows身份验证的解决方法
SQLSERVER误删Windows登录用户验证方式使用Windows身份验证的解决方法 今天看到这篇文章:没有了SA密码,无法Windows集成身份登录,DBA怎么办? 想起来之前着急哥问我的一个问 ...
- 来玩Play框架06 用户验证
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 用户验证(User Authentification)复合的使用Play框架的数个 ...
- MVC WebApi 用户验证 (2)
构建ASP.NET MVC5+EF6+EasyUI 1.4.3+Unity4.x注入的后台管理系统(66)-MVC WebApi 用户验证 (2) 前言: 构建ASP.NET MVC5+EF6+E ...
- php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证及缺点
在php中,可以使用Header函数做一些有趣的事情,用户验证就是其中一个很有意思的功能.具体用法: Header("WWW-Authenticate: Basic realm=" ...
随机推荐
- C#部分---类、异常保护;
一:需要初始化的:随机数类.时间值类 随机数类:初始化 实例化//不允许将初始化的语句放置在循环中//Random ran = new Random(); 时间值类:/初始化 实例化//DateTim ...
- google-http-java-client(android学习篇)
package com.example.android; import java.io.IOException; import java.util.HashMap; import android.ap ...
- poj3159 最短路(差分约束)
题意:现在需要分糖果,有n个人,现在有些人觉得某个人的糖果数不能比自己多多少个,然后问n最多能在让所有人都满意的情况下比1多多少个. 这道题其实就是差分约束题目,根据题中给出的 a 认为 b 不能比 ...
- C++@语句块
#include <iostream> using namespace std; int main() { { int x=1; cout << x << endl ...
- [PA2014] [BZOJ 3709]~[BZOJ 3719] 合集
今天起尝试做套题喵~ (当然是因为被最大流的题目弄得恶心死了) 一共是 10 道题一道一道做 预计 3~4 内做完 尽情期待 [BZOJ 3709]Bohater 一眼就能感受到贪心的气息 因为很直观 ...
- Linux-SSL和SSH和OpenSSH,OpenSSL有什么区别
ssl是通讯链路的附加层.可以包含很多协议.https, ftps, ..... ssh只是加密的shell,最初是用来替代telnet的.通过port forward,也可以让其他协议通过ssh的隧 ...
- Tensorflow ——神经网络
Training Data Eval: Num examples: 55000 Num correct: 52015 Precision @ 1: 0.9457Validation Data Eval ...
- 重力感应操控(unity iphone)
方案一:speed 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 public var simulateAcceleromet ...
- sublime安装sftp和ctags插件
1. 安装Package Control插件 , 安装是通过Sublime Text 2控制台.这是通过按Ctrl + `快捷访问.一旦打开,粘贴以下命令到控制台. 输入以下python代码 subl ...
- C# String与string的区别
C#中同时存在String与string MSDN中对string的说明: string is an alias for String in the .NET Framework.string是Str ...