2017-08-09 67 views
2

我试图将数据插入到MongoDB的3.4 GridFS的存储通过一个弹簧启动的应用程序启用身份验证,但我不断收到此错误:MongoDB的GridFS的认证工作不

Query failed with error code 13 and error message 'not authorized on user to execute command { find: \"fs.files\", filter: { metadata.fieldname: \"someContent\" } }' on server ip:27017"

我创建了一个用户与“超级用户“这个权利:

use admin 
db.createUser(
{ 
    user: "admin", 
    pwd: "password", 
    roles:["root"] 
}) 

我的春天开机application.properties是:

spring.data.mongodb.host=ip 
spring.data.mongodb.port=27017 
spring.data.mongodb.username=admin 
spring.data.mongodb.password=password 
spring.data.mongodb.database=user 
spring.data.mongodb.authentication-database=admin 

我已经尝试过,没有运气的“老”的MongoDB角色:

db.createUser(
{ 
    user: "admin", 
    pwd: "password", 
    roles: [ 
      { role: "userAdminAnyDatabase", db: "admin" }, 
      { role: "readWriteAnyDatabase", db: "admin" }, 
      { role: "dbAdminAnyDatabase", db: "admin" }, 
      { role: "clusterAdmin", db: "admin" } 
      ] 
}) 

读取和写入其他(非GridFS的)数据库完美的作品。 关于如何解决这个问题的任何想法?

+0

这似乎是一个春季启动配置问题......当使用“Robo 3T”时,我可以从fs.files和fs.chunks中读取。 – VERGiL

回答

0

解决方案: 我还有一个AbstractMongoConfiguration类。

@Configuration 
public class SpringMongoConfig extends AbstractMongoConfiguration { 
    //some code... 
} 

删除它解决了它。 您必须使用application.properties或Java类来配置MongoDB。