欢迎使用CSDN-markdown编辑器

来源:互联网 发布:郑爽演技知乎 编辑:程序博客网 时间:2024/05/22 01:53

使用的 MongoDB 3.4.1版本。
通过commone line 客户端连接、认证正常;
通过SpringMongodb 连接异常,提示:

Caused by: com.mongodb.MongoQueryException: Query failed with error code 13 and error message 'not authorized on sxw_ku to execute command { find: "statistic", filter: { startTime: new Date(1482883200000), teacherId: 126648, tenantId: 2 }, limit: 1, singleBatch: true }' on server 192.168.2.48:27017at com.mongodb.operation.FindOperation$1.call(FindOperation.java:493)at com.mongodb.operation.FindOperation$1.call(FindOperation.java:483)at com.mongodb.operation.OperationHelper.withConnectionSource(OperationHelper.java:241)at com.mongodb.operation.OperationHelper.withConnection(OperationHelper.java:214)

原因是MongoDB 3.X后账号密码的默认加密算法从 MONGODB-CR 修改为 SCRAM-SHA-1,而SpringMongodb原生不支持 SCRAM-SHA-1算法,在不修改SpringMongodb源码情况下,打算通过配置MongoDB 解决。

网上搜索找到各种分析说明解决办法,略有瑕疵,都有坑没能迈过去。
反复尝试,拼合了一个有效的步骤,仅供参考:

  • 禁用认证,修改支持的算法(似乎不修改算法也行)
 vim /etc/mongo.conf----------#security:#  authorization: enabledsetParameter:  authenticationMechanisms: MONGODB-CR,SCRAM-SHA-1
  • 重启服务,登录客户端执行 (坑在这里)
use admindb.system.version.save({"_id":"authSchema","currentVersion":3})
  • 删除原用户
 use yourdb db.dropUser("***")
  • 重新添加用户
use yourdbdb.createUser( { user: "*", pwd: "*", roles: [ { role: "*", db: "*" } ] } )
  • 开启认证,重启服务
 vim /etc/mongo.conf----------security:  authorization: enabled
0 0
原创粉丝点击