Java Web开发:Spring MVC连接 MongoDB启动用户名密码

预先准备

配置版本

spring MVC 4.1.1

spring-data-mongodb 1.60

mongodb3.2.1

springMVC开发环境已经配好

mongodb添加用户

注意事项:mongodb3.0版本后密码加密有两种方式,MONGODB-CR两种方式,3.0版本之后默认为SCRAM-SHA-1,而spring mongodb默认是MONGODB-CR,此版本并不支持设置加密方式,导致常常出现如下问题:

org.springframework.data.mongodb.CannotGetMongoDbConnectionException: Failed to authenticate to database [xxxx], username = [xxxxx], password = [x******x]
	org.springframework.data.mongodb.core.ReflectiveDbInvoker.authenticate(ReflectiveDbInvoker.java:83)
	org.springframework.data.mongodb.core.MongoDbUtils.doGetDB(MongoDbUtils.java:127)
	org.springframework.data.mongodb.core.MongoDbUtils.getDB(MongoDbUtils.java:94)
	org.springframework.data.mongodb.core.SimpleMongoDbFactory.getDb(SimpleMongoDbFactory.java:203)
	org.springframework.data.mongodb.core.SimpleMongoDbFactory.getDb(SimpleMongoDbFactory.java:191)
	org.springframework.data.mongodb.core.MongoTemplate.getDb(MongoTemplate.java:1606)
	org.springframework.data.mongodb.core.MongoTemplate.executeFindOneInternal(MongoTemplate.java:1839)
	org.springframework.data.mongodb.core.MongoTemplate.doFindOne(MongoTemplate.java:1656)
	org.springframework.data.mongodb.core.MongoTemplate.findOne(MongoTemplate.java:564)
	org.springframework.data.mongodb.core.MongoTemplate.findOne(MongoTemplate.java:559)
	com.oneday.ashop.core.base.mongo.BaseMongoDaoSupport.findOne(BaseMongoDaoSupport.java:81)
	com.oneday.ashop.webgate.user.UserDao.findUser(UserDao.java:44)
	com.oneday.ashop.webgate.user.UserService.login(UserService.java:88)
	com.oneday.ashop.webgate.user.UserControl.login(UserControl.java:57)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	java.lang.reflect.Method.invoke(Unknown Source)

我们把mongodb的用户密码加密方式改为MONGODB-CR问题就解决了。

1.查看加密方式

db.system.version.findOne({"_id" : "authSchema"})

5:SCRAM-SHA-1

3:MONGODB-CR

2.如果当前的monggodb已经有了用户,要先删除掉所有用户:

mongo
use admin
db.system.users.remove({})    <== removing all users
db.system.version.remove({}) <== removing current version 
db.system.version.insert({ "_id" : "authSchema", "currentVersion" : 3 })
3.重新添加用户:
>mongo
>use admin
>db.createUser({user:'admin',pwd:'123456', roles:[{role:'userAdminAnyDatabase', db:'admin'}]})
//用户角色可以百度


4.新建项目数据库-projectDB

注意事项:当我们新建projectDB后,一般会认为admin用户的权限是__system,该用户会拥有projectDB的一切权限,事实是也是如此,但是当在spring中用该admin进行登陆时,是没有权限的,关于这一点我目前还没有深究,也就是说必须为projectDB新建一个用户赋予dbadmin角色。

>use projectDB
>db.createUser({user:'projectUser',pwd:'123456', roles:[{role:'dbAdmin', db:'projectDB'}]})

spring 配置MongoDB连接

config.properties文件

mongo.locate=localhost:27017
mongo.dbname=projectDB
mongo.connectionsPerHost=4  
mongo.threadsAllowedToBlockForConnectionMultiplier=20  
mongo.connectTimeout=0  
mongo.maxWaitTime=10000  
mongo.autoConnectRetry=true  
mongo.socketKeepAlive=true  
mongo.socketTimeout=0  
mongo.username=projectUser
mongo.password=123456


applicationContext.xml文件



          
          
           
	  
          
          
          
                  
              
          
                      
          
        
          

        
		   
		   
	   
          
          
            
          
        	
          
      

这样就连接成功了。



你可能感兴趣的:(SpringMVC,计算机,spring,mongodb,密码)