mongodb - 使用mongodb+srv配置Mongo

标签 mongodb spring-boot ubuntu

我在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 2782SRV 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/

相关文章:

javascript - MongoDB 根据日期更新变量

node.js - 检索存储在 mongodb 中的图像

java - Spring Boot H2 数据库 - 表不显示

php - ssh2_auth_pubkey_file 获取错误回调返回错误(PHP 7.4,Ubuntu 20)

python - 为什么 Ubuntu 系统包会显示 pip freeze/我如何清理 pip freeze?

mongodb - 为什么 Mongoose 无法在 MongoDB Atlas 中创建索引?

C# IOptions 无法将我的对象隐式转换为接口(interface)以将其注入(inject)我的服务 AddSingleton

windows - 是否有可能从本地网络中的另一台机器访问 docker-compose 容器?

java - Spring 启动 Controller 404

java - 从Spring创建war文件:boot project in Eclipse