spring-data-mongodb mongo2.X驱动连接mongodb3.X服务器用户认证失败的解决办法
2017-02-15 00:00
661 查看
由于mongodb3.X后版本改变了用户认证机制,由原先默认的"MONGODB-CR"认证方式改为了"SCRAM_SHA_1",mongo2.X驱动只支持"MONGODB-CR"方式的认证,所以程序连接时会报认证失败错误
解决办法:
首先关闭认证,修改system.version文档里面的authSchema版本为3,初始安装时候应该是5,命令行如下:
不过如果你现在开启认证,仍然会提示AuthenticationFailed MONGODB-CR credentials missing in the user document 原因是原来创建的用户已经使用了SCRAM-SHA-1认证方式
解决方式就是删除刚刚创建的用户,重新重建即可:
附上spring整合mongodb2.X驱动的配置
spring整合mongodb3.X驱动的配置
解决办法:
首先关闭认证,修改system.version文档里面的authSchema版本为3,初始安装时候应该是5,命令行如下:
> use admin switched to db admin > var schema = db.system.version.findOne({"_id" : "authSchema"}) > schema.currentVersion = 3 3 > db.system.version.save(schema) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
不过如果你现在开启认证,仍然会提示AuthenticationFailed MONGODB-CR credentials missing in the user document 原因是原来创建的用户已经使用了SCRAM-SHA-1认证方式
> use admin switched to db admin > db.system.users.find() [...] { "_id" : "userdb.myuser", "user" : "myuser", "db" : "userdb", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "XXXXXXXXXXXXXXXXXXXXXXXX", "storedKey" : "XXXXXXXXXXXXXXXXXXXXXXXXXXX", "serverKey" : "XXXXXXXXXXXXXXXXXXXXXXXXXXX" } }, "roles" : [ { "role" : "dbOwner", "db" : "userdb" } ] }
解决方式就是删除刚刚创建的用户,重新重建即可:
> use userdb switched to db userdb > db.dropUser("myuser") true >db.createUser({user:'myuser',pwd:'123456',roles:[{role:'dbOwner',db:'userdb'}]})
附上spring整合mongodb2.X驱动的配置
<?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:mongo="http://www.springframework.org/schema/data/mongo" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.8.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 加载mongodb的属性配置文件 --> <context:property-placeholder location="classpath:mongodb.properties"/> <mongo:mongo id="mongo" replica-set="${mongo.relicatSet.host}"> <mongo:options connect-timeout="${mongo.connectTimeout}" max-wait-time="${mongo.maxWaitTime}" auto-connect-retry="${mongo.autoConnectRetry}" socket-keep-alive="${mongo.socketKeepAlive}" socket-timeout="${mongo.socketTimeout}" slave-ok="false"/> </mongo:mongo> <mongo:db-factory id="mongoDbFactory" dbname="o2o_store" mongo-ref="mongo" username="${mongo.username}" password="${mongo.password}"/> <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"> <constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/> </bean> </beans>
spring整合mongodb3.X驱动的配置
<?xml version="1.0" encoding=" 7fe0 UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mongo="http://www.springframework.org/schema/data/mongo" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.8.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 加载mongodb的属性配置文件 --> <context:property-placeholder location="classpath:mongodb.properties"/> <!-- 定义mongo对象,对应的是mongodb官方jar包中的Mongo, --> <!-- MongoClient --> <bean id="mongoClient" class="com.mongodb.MongoClient"> <constructor-arg name="credentialsList"> <list> <!-- Credentials --> <bean class="com.mongodb.MongoCredential"> <constructor-arg name="mechanism" value="#{T(com.mongodb.AuthenticationMechanism).SCRAM_SHA_1}"/> <constructor-arg type="java.lang.String" name="userName" value="${mongo.username}"/> <constructor-arg type="java.lang.String" name="source" value="${mongo.dbname}"/> <constructor-arg type="char[]" name="password" value="${mongo.password}"/> </bean> </list> </constructor-arg> <constructor-arg name="seeds"> <list> <bean class="com.mongodb.ServerAddress"> <constructor-arg type="java.lang.String" name="host" value="${mongo.sharded_clusters1.host}"/> <constructor-arg type="int" name="port" value="${mongo.sharded_clusters1.port}"/> </bean> <bean class="com.mongodb.ServerAddress"> <constructor-arg type="java.lang.String" name="host" value="${mongo.sharded_clusters2.host}"/> <constructor-arg type="int" name="port" value="${mongo.sharded_clusters2.port}"/> </bean> <bean class="com.mongodb.ServerAddress"> <constructor-arg type="java.lang.String" name="host" value="${mongo.sharded_clusters2.host}"/> <constructor-arg type="int" name="port" value="${mongo.sharded_clusters3.port}"/> </bean> </list> </constructor-arg> </bean> <!-- MongoDbFactory --> <bean id="simpleMongoDbFactoryID" class="org.springframework.data.mongodb.core.SimpleMongoDbFactory"> <constructor-arg ref="mongoClient"/> <constructor-arg name="databaseName" value="${mongo.dbname}"/> </bean> <!-- MongoTemplate --> <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"> <constructor-arg ref="simpleMongoDbFactoryID"/> </bean> </beans>
相关文章推荐
- 异常详细信息: System.Data.SqlClient.SqlException:用户 'IIS APPPOOL\DefaultAppPool' 登录失败解决办法
- 异常详细信息: System.Data.SqlClient.SqlException: 用户 'NT AUTHORITY\IUSR' 登录失败解决办法
- System.Data.SqlClient.SqlException: 用户'pc-2009\ASPNET' 登录失败的解决办法
- 用户 'sa' 登录失败。该用户与可信 SQL Server 连接无关联。解决办法小结
- 用户 'sa' 登录失败。该用户与可信 SQL Server 连接无关联。解决办法
- “用户sa登录失败,该用户与可信sql server连接无关联”解决办法
- sql2005用户 'sa' 登录失败。该用户与可信 SQL Server 连接无关联 解决办法
- “用户 'sa' 登录失败。该用户与可信 SQL Server 连接无关联”问题及解决办法
- 异常详细信息: System.Data.SqlClient.SqlException:用户 'IIS APPPOOL\DefaultAppPool' 登录失败解决办法v
- 异常详细信息: System.Data.SqlClient.SqlException:用户 'IIS APPPOOL\DefaultAppPool' 登录失败解决办法
- 异常详细信息: System.Data.SqlClient.SqlException:用户 'IIS APPPOOL\DefaultAppPool' 登录失败解决办法
- System.Data.SqlClient.SqlException: 用户'opper\ASPNET' 登录失败的解决办法!
- 异常详细信息: System.Data.SqlClient.SqlException:用户 'IIS APPPOOL\DefaultAppPool' 登录失败解决办法
- 异常详细信息: System.Data.SqlClient.SqlException:用户 'IIS APPPOOL\DefaultAppPool' 登录失败解决办法
- 用户 'sa' 登录失败。该用户与可信 SQL Server 连接无关联'。错误代码:18452 解决办法
- 用户xx登录失败,该用户与可信sql server连接无关联的解决办法
- System.Data.SqlClient.SqlException: 用户'XXXX\ASPNET' 登录失败的解决办法
- 用户 'sa' 登录失败。原因: 未与信任 SQL Server 连接 的解决方法
- SQL SERVER 2000用户sa 登录失败的解决办法
- sqlserver2005获取连接失败解决办法