如何让C++Builder XE6的TFDConnection使用TLS v1.2及以上版本?
解决C++Builder XE6中TFDConnection使用TLS 1.2+连接MySQL 8.0.28的方法
升级FireDAC驱动
C++Builder XE6自带的FireDAC驱动对MySQL 8.0的TLS支持存在局限性,需替换为适配MySQL 8.0的新版FireDAC驱动。从Embarcadero官方获取对应版本的驱动更新,替换后重新编译程序。强制指定TLS版本参数
在TFDConnection的Params中添加TLS版本约束:- 可视化操作:打开TFDConnection属性编辑器,切换到
Params标签,添加两行参数:SSL_CIPHER=TLSv1.2,TLSv1.3 SSL_MODE=REQUIRED - 代码实现:动态设置参数
FDConnection1->Params->Add("SSL_CIPHER=TLSv1.2,TLSv1.3"); FDConnection1->Params->Add("SSL_MODE=REQUIRED");
- 可视化操作:打开TFDConnection属性编辑器,切换到
替换OpenSSL依赖库
XE6默认的OpenSSL版本不支持TLS 1.2/1.3,需将程序依赖的OpenSSL库替换为1.1.1系列版本。把对应的libcrypto-1_1.dll和libssl-1_1.dll(或旧命名的libeay32.dll、ssleay32.dll)放到程序运行目录,确保程序加载新版库文件。直接修改连接字符串
在连接字符串中明确包含TLS参数,示例:DriverID=MySQL;Server=你的服务器地址;Database=目标库名;User_Name=用户名;Password=密码;SSL_MODE=REQUIRED;SSL_CIPHER=TLSv1.2,TLSv1.3
内容的提问来源于stack exchange,提问作者Tomas
相关产品推荐
相关产品推荐

