簡體   English   中英

查詢失敗,錯誤代碼為16550,錯誤消息“未授權對myCollection進行查詢”

[英]Query failed with error code 16550 and error message 'not authorized for query on myCollection

我有一個與MongoDB交互的spring boot rest應用程序,但是當我調用controller方法時,出現以下異常:

com.mongodb.MongoQueryException: Query failed with error code 16550 and error message 'not authorized for query on 'tenant' on server 172.16.233.128:27017
at com.mongodb.connection.ProtocolHelper.getQueryFailureException(ProtocolHelper.java:131) ~[mongo-java-driver-3.4.2.jar:na]
at com.mongodb.connection.QueryProtocol.execute(QueryProtocol.java:295) ~[mongo-java-driver-3.4.2.jar:na]
at com.mongodb.connection.QueryProtocol.execute(QueryProtocol.java:54) ~[mongo-java-driver-3.4.2.jar:na]
at com.mongodb.connection.DefaultServer$DefaultServerProtocolExecutor.execute(DefaultServer.java:168) ~[mongo-java-driver-3.4.2.jar:na]
at com.mongodb.connection.DefaultServerConnection.executeProtocol(DefaultServerConnection.java:289) ~[mongo-java-driver-3.4.2.jar:na]
at com.mongodb.connection.DefaultServerConnection.query(DefaultServerConnection.java:212) ~[mongo-java-driver-3.4.2.jar:na]
at com.mongodb.operation.FindOperation$1.call(FindOperation.java:525) ~[mongo-java-driver-3.4.2.jar:na]
at com.mongodb.operation.FindOperation$1.call(FindOperation.java:510) ~[mongo-java-driver-3.4.2.jar:na]
at com.mongodb.operation.OperationHelper.withConnectionSource(OperationHelper.java:431) ~[mongo-java-driver-3.4.2.jar:na]
at com.mongodb.operation.OperationHelper.withConnection(OperationHelper.java:404) ~[mongo-java-driver-3.4.2.jar:na]
at com.mongodb.operation.FindOperation.execute(FindOperation.java:510) ~[mongo-java-driver-3.4.2.jar:na]
at com.mongodb.operation.FindOperation.execute(FindOperation.java:81) ~[mongo-java-driver-3.4.2.jar:na]
at com.mongodb.Mongo.execute(Mongo.java:836) ~[mongo-java-driver-3.4.2.jar:na]
at com.mongodb.Mongo$2.execute(Mongo.java:823) ~[mongo-java-driver-3.4.2.jar:na] .....

這些是類和配置

pom.xml是

<?xml version="1.0" encoding="UTF-8"?>

http://maven.apache.org/xsd/maven-4.0.0.xsd“>

<modelVersion>4.0.0</modelVersion>
<groupId>com.concretepage</groupId>
<artifactId>spring-boot-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>spring-mongodb</name>
<description>Spring Boot Demo Project</description>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.2.RELEASE</version>
</parent>
<properties>
    <java.version>1.8</java.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>            
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-mongodb</artifactId>

</dependency>

 </dependencies> 
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

xml配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:context="http://www.springframework.org/schema/context"
   xmlns:mvc="http://www.springframework.org/schema/mvc" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:p="http://www.springframework.org/schema/p"
   xmlns:mongo="http://www.springframework.org/schema/data/mongo"
   xsi:schemaLocation="
    http://www.springframework.org/schema/beans    
    http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-4.0.xsd
     http://www.springframework.org/schema/data/mongo 
    http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">

<context:annotation-config />
<context:property-placeholder location="classpath*:properties/application.properties"/>
<context:component-scan base-package="com.faracloud.mongodbop.controller" />
<mvc:annotation-driven />   
<mongo:mongo id="mongo" host="${catalog.mongodb.host}" port="${catalog.mongodb.port}" />
<mongo:db-factory id="mongoDbFactory" dbname="${catalog.mongodb.database}" mongo-ref="mongo" 
                  username="${catalog.mongodb.user}" 
                  password="${catalog.mongodb.password}"/>

<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
    <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
</bean>
<mongo:repositories base-package="com.faracloud.mongodbop.repository" 
                    mongo-template-ref="mongoTemplate" />

MongoApp.java

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.ImportResource;

@SpringBootApplication
@ImportResource("classpath:spring/mongodbop-context.xml")
public class MongoApp {
   public static void main(String[] args) {
       ApplicationContext ctx =SpringApplication.run(MongoApp.class, 
  args);
 }
}

TenantRepository.java

import com.faracloud.mongodbop.model.Tenant;
import org.springframework.data.mongodb.repository.MongoRepository;

public interface TenantRepository extends MongoRepository<Tenant, 
  String> {

}

休息控制器

import com.faracloud.mongodbop.model.Tenant;
import com.faracloud.mongodbop.repository.TenantRepository;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class StatisticController {
   @Autowired
   TenantRepository repo;
   @RequestMapping("/greeting")
   public List<Tenant>  greeting() {

     return  repo.findAll() ;
   }
}

請給我一些建議,如何處理此錯誤

使用這些依賴關系解決了我的問題

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

我沒有在主機,dbname和憑據上使用mongoTemplate和mongoDbFactory,而是在application.properties中使用了以下配置

spring.data.mongodb.host=x.x.x.x 
spring.data.mongodb.port=27017 
spring.data.mongodb.database=xxx
spring.data.mongodb.username=***
spring.data.mongodb.password=***

謝謝審稿人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM