ERROR: SSL_connect: error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol

workbench连接远程服务器的时候出现的错误,在MySQL Workbench里可以将连接参数Use SSL从If available设为No 可以解决

### 解决Docker容器内的ODBC连接错误08001 当遇到`pyodbc.OperationalError: ('08001', '[08001] [Microsoft][ODBC Driver 18 for SQL Server]SSL Provider: [error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol]')`这样的错误时,这通常意味着客户端尝试使用的协议版本不被服务器支持[^1]。 #### 使用较低版本的ODBC驱动器 对于Linux环境中的应用程序来说,如果目标是连接到较早版本的SQL Server数据库实例,可以考虑使用更老版本的ODBC驱动器,比如ODBC Driver 17而不是最新的Driver 18。这是因为新版本可能默认启用了某些安全特性(如TLS加密),而这些特性并不总是能与旧版服务端兼容[^3]。 ```bash # 安装ODBC Driver 17 for SQL Server curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - curl https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list > /etc/apt/sources.list.d/mssql-release.list apt-get update ACCEPT_EULA=Y apt-get install msodbcsql17 ``` #### 修改连接字符串参数 另一个方法是在建立连接时调整连接串设置以适应不同的安全性需求。具体而言,在创建数据源名称(DSN)或直接编写Python脚本里的连接字符串时加入额外选项来控制SSL行为: - `Encrypt=no`: 关闭强制性的SSL/TLS握手过程。 - 或者指定最低限度的安全传输层标准:`TrustServerCertificate=yes; Encrypt=yes`. ```python connection_string = ( "DRIVER={{ODBC Driver 17 for SQL Server}};" f"SERVER={server};" f"DATABASE={database};" f"UID={username};" f"PWD={password};" "TrustServerCertificate=yes;" # 接受自签名证书而不验证其有效性 ) conn = pyodbc.connect(connection_string) ``` #### 更新Navicat或其他第三方工具 如果是通过图形界面的应用程序(例如Navicat)访问位于云端的服务,则应确保该应用已经安装了必要的组件和支持库文件,特别是针对特定操作系统架构编译过的msodbcsql包[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值