Spring Boot + Mongo副本集:错误代码16550'未授权查询'

时间:2017-03-22 13:04:47

标签: java spring mongodb spring-boot spring-data-mongodb

我遇到了一个奇怪的情况,我有一个Mongo副本集(在3个不同的服务器中有3个副本),我尝试将数据存储库(Spring Data)连接到mongo副本集。我的用户有readWrite和dbAdmin角色,但我仍然无法执行查询。

我在本地计算机上复制了相同的复制集环境,我可以毫无问题地执行操作。

背景如下:

  • 3台不同机器上配有3个mongos的副本
  • 数据库 xpto ,用户 myuser 定义了2个角色: readWrite + dbAdmin
  • Spring配置Mongo URI(未定义主机,密码,数据库值,仅限URI):mongodb://myuser:myuserpass@localhost:27017,localhost:27018,localhost:27019/xpto
  • MongoDB版本: 2.4.9
  • 启动时,Spring启动显示日志:org.mongodb.driver.cluster - Monitor thread successfully connected to server with description ServerDescription{address=127.0.0.1:27017, type=REPLICA_SET_SECONDARY, state=CONNECTED, ok=true, version=ServerVersion{versionList=[2, 4, 9]}, minWireVersion=0, maxWireVersion=0, maxDocumentSize=16777216, roundTripTimeNanos=876458, (...)
  • 但是,使用简单的find()方法调用存储库时,会抛出异常:com.mongodb.MongoQueryException: Query failed with error code 16550 and error message 'not authorized for query ...

当我在本地计算机上使用完全相同的配置安装相同的副本集,但使用mongoDB版本 3.4.1 时,我可以毫无问题地执行此操作。

问题的根源可能是mongoDB版本的差异吗?或者还有其他我在这里缺少的东西吗?

由于

0 个答案:

没有答案