当我尝试对 mLab 上的 mongo 实例进行查询时发生错误。我从 Spring Boot 应用程序请求它。与数据库的连接稳定。下面是来自控制台的日志。
监视器线程成功连接到服务器,描述为 ServerDescription{address=ds131531.mlab.com:31531, type=REPLICA_SET_PRIMARY, state=CONNECTED, ok=true, version=ServerVersion{versionList=[3, 4, 15]}, minWireVersion=0 ,maxwireversion = 5,maxDocumentsize = 16777216,逻辑sessionTimeTminutes = null,roundtriptimenanos = 138364906,setName ='rs-ds131531',canonicalAddress = ds131531-a.mlab.com:这是给出的、passives=[]、arbiters=[]、primary='ds131531-a.mlab.com:31531'、tagSet=TagSet{[]}、electionId=7fffffff0000000000000001、setVersion=1、lastWriteDate=7 月 18 日星期三 15:22: 2018 年中欧夏令时间 37 日,lastUpdateTimeNanos=20828794373992}
这是确切的错误消息
查询失败,错误代码为 13,并出现错误消息“未授权在披萨店上执行命令 { find: "product", filter: {}, batchSize: 2147483647 }' 在服务器 ds131531.mlab.com:31531 上;嵌套异常是 com.mongodb.MongoQueryException:查询失败,错误代码 13 和错误消息“未授权在披萨店上执行命令 { find:“product”,filter:{},batchSize:2147483647 }”在服务器 ds131531.mlab 上.com:31531
如果我从 mongo shell 进行相同的查询,一切都会正常。
我已向发出请求的用户添加了 readWrite 角色和我的自定义 readProduct 角色,但没有任何帮助。 dbOwner 和 read 是内置角色。
用户 mongo 角色:
"_id" : "pizza-db.kubiakb",
"user" : "kubiakb",
"db" : "pizza-db",
"roles" : [
{
"role" : "readProduct",
"db" : "pizza-db"
},
{
"role" : "read",
"db" : "pizza-db"
},
{
"role" : "dbOwner",
"db" : "pizza-db"
}
]
阅读产品角色
{
"role" : "readProduct",
"db" : "pizza-db",
"isBuiltin" : false,
"roles" : [ ],
"inheritedRoles" : [ ],
"privileges" : [
{
"resource" : {
"db" : "pizza-db",
"collection" : "product"
},
"actions" : [
"find"
]
}
],
"inheritedPrivileges" : [
{
"resource" : {
"db" : "pizza-db",
"collection" : "product"
},
"actions" : [
"find"
]
}
]
}
Edit:Spring application.properties
spring:
profiles: heroku
data:
mongodb:
uri: mongodb://login:[email protected]:31531/pizza-db