Docker部署SQL Server后,pyodbc连接SSL证书验证失败如何解决?
解决pyodbc连接SQL Server Docker容器的SSL证书错误
你的问题出在连接参数冲突:你同时启用了trusted_connection='yes'(系统集成认证)和SQL账号密码认证,驱动会优先走集成认证,既忽略了你的SQL登录信息,也导致trust_server_certificate='yes'的设置未生效,最终触发自签名证书验证失败的错误。
解决方法
直接修改连接参数:
- 移除
trusted_connection='yes',因为你使用的是SQL账号(demo用户)登录,不需要系统集成认证 - 保留
trust_server_certificate='yes',用来信任Docker容器中SQL Server的自签名证书
修改后的代码如下:
import pyodbc SERVER = 'localhost,1433' DATABASE = 'demo' USERNAME = 'demo' PASSWORD = 'Demo123#' cnxn = pyodbc.connect(driver='{ODBC Driver 18 for SQL Server}', server=SERVER, database=DATABASE, trust_server_certificate='yes', username=USERNAME, password=PASSWORD)
额外排查方向(可选)
- 确认系统已正确安装ODBC Driver 18 for SQL Server,版本不匹配也可能引发类似问题
- 如果仍有异常,可尝试启动Docker容器时通过
-e "MSSQL_TLS_CERTIFICATE=/path/to/your/cert"指定自定义证书,但上述参数修改已能解决绝大多数场景
内容的提问来源于stack exchange,提问作者user51
相关产品推荐
相关产品推荐

