环境
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}}}]
答案 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用户名和密码连接信息。