为aut-mongo-data配置auth

时间:2016-10-11 09:44:16

标签: spring-boot spring-data spring-mongodb spring-boot-gradle-plugin

环境

spring-boot 1.3.2

spring-mongo 0.8.0

使用gradle构建我的spring-boot微服务。

问题

mongo数据库中的一个启用了auth,所以我在application.yml

中配置这些参数

spring: data: mongo: username:xxx password:xxx authentication-database:xxx

它适用于设置了身份验证的mongodb。

但我的mongdb错误,但没有设置auth 即使我设置了用户名="",密码=""。尝试使用身份验证失败。

  

引起:com.mongodb.CommandFailureException:{" serverUsed" :" localhost:27017" ," ok" :0.0,"代码" :18," errmsg" :"身份验证失败。"}       在com.mongodb.CommandResult.getException(CommandResult.java:76)〜[mongo-java-driver-2.13.3.jar:na]       在com.mongodb.CommandResult.throwOnError(CommandResult.java:140)〜[mongo-java-driver-2.13.3.jar:na]       在com.mongodb.DBPort $ SaslAuthenticator.authenticate(DBPort.java:903)〜[mongo-java-driver-2.13.3.jar:na]       在com.mongodb.DBPort.authenticate(DBPort.java:436)〜[mongo-java-driver-2.13.3.jar:na]       在com.mongodb.DBPort.checkAuth(DBPort.java:447)〜[mongo-java-driver-2.13.3.jar:na]       在com.mongodb.DBTCPConnector.doOperation(DBTCPConnector.java:207)〜[mongo-java-driver-2.13.3.jar:na]       在com.mongodb.DBCollectionImpl.createIndex(DBCollectionImpl.java:392)〜[mongo-java-driver-2.13.3.jar:na]       在com.mongodb.DBCollection.createIndex(DBCollection.java:597)〜[mongo-java-driver-2.13.3.jar:na]

我的问题是如何删除未设置auth的mongo db的mongo.username,密码密钥动态?

我也很好奇为什么无法删除application.yml文件中的密钥。虽然我们已经看到我们可以在本文档中使用Maven或gradle自动扩展属性:property expansion

更新 如果只是将这些键留空,仍会出现错误

完整的回复是{" ok" :0.0," errmsg" :"数据库名称无效:''","代码" :73}}}]

1 个答案:

答案 0 :(得分:1)

与@ bart.s.交谈后,用弹簧配置文件解决了这个问题。 当连接到启用auth的mongo db时,需要在application.yml中激活profiles.config profile key,如下所示

--- 
spring:
    profiles: prod
    data:
         mongodb:
           username: ${MONGO_USERNAME:mongo}
           password: ${MONGO_PASSWORD:mongo}
           authentication-database: ${MONGO_AUTH:admin}      

使用auth.add连接到mongo" - spring.profiles.active = prod"激活mongodb用户名和密码连接信息。