如何在Delphi中通过FireDAC连接MongoDB Atlas数据库
Delphi Seattle 搭配 FireDAC 连接 MongoDB Atlas 解决方案
核心原因说明
mongodb+srv 是MongoDB 3.6版本推出的简化连接协议,会自动通过DNS SRV记录拉取集群节点、复制集、SSL配置等参数,但Delphi Seattle自带的FireDAC MongoDB驱动不支持该协议解析,所以直接提取+srv后缀的域名填写会解析失败。
操作步骤
1. 获取Atlas集群原始节点参数
登录MongoDB Atlas后台,进入集群连接页,选择「Connect with MongoDB Shell」,再选择3.4及更早版本的Shell选项,即可获取非SRV格式的配置信息,包括:
- 多节点域名+端口列表(格式类似
xxx-00.mongodb.net:27017,xxx-01.mongodb.net:27017,xxx-02.mongodb.net:27017) - 复制集名称(格式类似
atlas-xxxxxx-shard-0)
2. 提前替换依赖库
Delphi Seattle自带的MongoDB驱动依赖的mongoc.dll、bson.dll版本过低,不兼容Atlas的安全规则,需要替换为1.9.x~1.15.x区间版本的dll,放在程序运行根目录即可。
3. FireDAC连接参数配置
打开TFDConnection组件的参数编辑器,驱动选择Mongo,按以下规则填写参数:
Server:填写刚才获取的所有节点域名+端口,用逗号分隔Database:填写目标业务数据库名称User_Name:填写Atlas平台创建的数据库用户名(注意不是Atlas登录账号)Password:填写对应数据库用户的密码- 进入高级参数页,新增以下配置:
ReplicaSet:填写获取到的复制集名称AuthSource:填admin(Atlas默认认证库为admin)SSL:填yes(Atlas强制要求SSL连接)AuthMechanism:填SCRAM-SHA-1,显式指定认证机制兼容老版本驱动
代码配置示例(可选)
如果需要通过代码动态配置连接,参考以下代码:
var FDConn: TFDConnection; begin FDConn := TFDConnection.Create(nil); try FDConn.DriverName := 'Mongo'; FDConn.Params.Add('Server=xxx-00.mongodb.net:27017,xxx-01.mongodb.net:27017,xxx-02.mongodb.net:27017'); FDConn.Params.Add('Database=你的业务数据库名'); FDConn.Params.Add('User_Name=Atlas数据库用户名'); FDConn.Params.Add('Password=对应用户密码'); FDConn.Params.Add('ReplicaSet=atlas-xxxxxx-shard-0'); FDConn.Params.Add('AuthSource=admin'); FDConn.Params.Add('SSL=yes'); FDConn.Params.Add('AuthMechanism=SCRAM-SHA-1'); FDConn.Connected := True; // 连接成功后执行业务逻辑 finally FDConn.Free; end; end;
连接失败排查
- 检查Atlas集群的IP白名单是否已经添加当前客户端的公网IP,可临时开启允许所有IP访问验证
- 确认数据库用户名密码正确,不要误用Atlas平台的登录账号密码
- 检查
mongoc.dll、bson.dll版本是否在兼容区间内,不要使用过新或过老的版本
内容的提问来源于stack exchange,提问作者Bruno
相关产品推荐
相关产品推荐

