我在docker上启动mongo,所以默认主机:localhost
,端口:27017
,用户名:root
密码:example
现在我想通过连接字符串进行连接:
mongodb+srv://root:example@localhost/sim
但我收到一条错误消息:
Caused by: com.mongodb.MongoConfigurationException: Unable to look up TXT record for host localhost
在我的主机文件中,我有:
127.0.0.1 localhost
127.0.0.1 _mongodb._tcp.localhost
Mongo 运行在 docker 上:
Docker ps
mongo "docker-entrypoint.s…" 13 days ago Up 3 hours 0.0.0.0:27017->27017/tcp
Ubuntu 18.04
最佳答案
为了使用 mongodb+srv 方案,您将需要几个 DNS 条目:
- 每个 mongod 节点的正向查找主机 (A) 条目
- 集群的 TXT 记录
- 集群的 SRV 记录
当您添加 127.0.0.1 _mongodb._tcp.localhost
时,它实际上是一个主机记录。
SRV记录的内容应指示提供服务的节点的几条信息,包括端口号和主机名。
请参阅RFC 2782或SRV record在维基百科上。
MongoDB 副本集的 SRV 记录可能如下所示:
_mongodb._tcp.mycluster.mydomain.com. 60 IN SRV 0 0 27017 mongohost1.mydomain.com.
_mongodb._tcp.mycluster.mydomain.com. 60 IN SRV 0 0 27017 mongohost2.mydomain.com.
_mongodb._tcp.mycluster.mydomain.com. 60 IN SRV 0 0 27017 mongohost3.mydomain.com.
TXT 记录应指示连接字符串的 URI 选项,例如“authSource=admin&replicaSet=myreplset”
。
请注意,ssl=true
并未明确指定,而是由 SRV 方案隐含。
这个blog post一位 MongoDB 开发人员在引入该功能时提出的建议可能很有用。
关于mongodb - 使用mongodb+srv配置Mongo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60376489/