2016-04-05 23 views
1

私はSpringブートアプリケーションを使用してMongoDBインスタンスに接続しています。私たちは、次の役割とMongoDBの上の認証を有効にしているspringbootアプリケーションからmongodbを認証できません

役割:[{役割: "のdbowner"、DB: "{{mongo.database_name}}"}

役割:[{役割: "READWRITE" 、DB: "{{mongo.database_name}}"}

我々はCONFを

データファイル使用して信用証明書を提供している:

を0

mongodb.uri:MongoDBの://127.0.0.1/testDB

mongodb.authentication-データベース:管理

mongodb.username: '管理者'

mongodb.password: '管理者'

がrepositories.enabled:真

をアプリケーションの起動中に、我々は特定のコレクションに挿入されています。しかし挿入中に、インデックスを作成しようとし、次の例外を除いて

org.springframework.data.mongodb.UncategorizedMongoDbException失敗: { "serverUsed": "ローカルホスト:27017"、 "OK":0.0、 "ERRMSG" を: "testDBでコマンドを実行する権限がありません {createIndexes:\" ws.city \ "、indexes:[{name:\" code \ "、ns:\" testDB.ws.city \ "、unique:true、key :{code:1}}}} "、" code ":13};

FULLスタックトレース: :

不満依存性は[XYZRepository]タイプのインデックス0とコンストラクタ引数で表現エラー名でBeanを作成 'XYZRepository':initメソッドの呼び出しに失敗しました。 ネストされた例外は次のとおりです。 {"serverUsed": "localhost:27017"、 "ok":0.0、 "errmsg": "testDBでコマンドを実行する権限がありません。 ws.city \ "、indexes:[{name:\" code \ "、ns:\" testDB.ws.city \ "、unique:true、key:{code:1}}}}"、 "code": 13}; ネストされた例外は次のとおりです。{"serverUsed": "localhost:27017"、 "ok":0.0、 "errmsg": "コマンドを実行するためにtestDBで許可されていません。{createIndexes:\" ws.city \ 、インデックス:{{name:\ "code \"、ns:\ "testDB.ws.city \"、unique:true、key:{code:1}}}} "、" code ":13}; ネストされた例外はorg.springframework.beans.factory.BeanCreationExceptionです。名前が 'XYZRepository'のBeanを作成中にエラーが発生しました: initメソッドの呼び出しに失敗しました。ネストされた例外はorg.springframework.data.mongodb.UncategorizedMongoDbExceptionである: {"serverUsed": "localhost:27017"、 "ok":0.0、 "errmsg": "コマンドを実行するためにtestDBで許可されていない{createIndexes:\" ws .city \ "、インデックス:[{name:\" code \ "、ns:\" testDB.ws.city \ "、unique:true、key:{code:1}}]}"、 "code":13 }; ネストされた例外は次のとおりです。com.mongodb.CommandFailureException:{"serverUsed": "localhost:27017"、 "ok":0.0、 "errmsg": "コマンドを実行するためにtestDBで許可されていません {createIndexes:\" ws.city \ 、インデックス:[{name:\ "code \"、ns:\ "testDB.ws。(コンストラクターリソルバー.java:749) at 012.PringFramework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:749)at at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:185)org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1143)で org.springframework.beansで 。 factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1046)org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510)で org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactoryで 。 cr evalue(AbstractAutowireCapableBeanFactory.java:482) at org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:306) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java :230) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) at org (AbstractApplicationContext.java:839) at or g.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538) at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118) at org.springframework.boot.SpringApplication。リフレッシュ(SpringApplication.java:764) at org.springframework.boot.SpringApplication.doRun(SpringApplication.java:357) at org.springframework.boot.SpringApplication.run(SpringApplication.java:305) at org.springframework。 (SpringApplication.java:1113) atat com.app.ws.WSApplication.main(WSApplication.java:22) でのブート.SpringApplication.run sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ java.lang.reflect.Method.invokeでsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) でsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) AT E法) (Method.java :java.lang.Thread.run(Thread.java:745)

でorg.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:53) で498) 理想的には、私は理解していることアプリケーションがmongodbと対話するために必要な役割は "readWrite"でなければなりません。

  • 別の役割を期待していますか?
  • スプリングは挿入中にインデックスを自動的に作成しようとしますか、より高い/異なるロールを必要としますか?

  • このシナリオではわからないものはありますか?

我々は、最新バージョンのMongoDBを使用している:3.2.4 Springboot 1.3.1

答えて

2

mongodb.authentication-database: testDBようTESTDBする認証データベースを変更するようにしてください。

関連する問題