Ubuntu 20.x用SqlAlchemy连Windows 2019的SQL Server报Kerberos错误如何解决
问题原因
你使用的连接字符串中配置了Trusted_Connection=yes,该参数代表启用Windows集成身份认证,依赖Active Directory、Kerberos服务完成身份校验,你当前环境未部署相关服务,因此会抛出Kerberos凭证不存在的错误。
解决方案
1. 修改连接字符串
将Trusted_Connection=yes参数移除或改为no,根据你使用的认证类型调整连接字符串:
- 若使用SQL Server内置账号认证(推荐,无需依赖Windows系统账号):
# sql_username、sql_password为SQL Server实例内创建的账号密码 constr = r'mssql+pyodbc://sql_username:sql_password@xxx.xx.xx.xx:1433/db?driver=ODBC Driver 17 for SQL Server'
- 若使用Windows Server本地账号认证:
# 替换WIN2019为你的Windows服务器的主机名,uname、pwd为Windows本地账号密码 constr = r'mssql+pyodbc://WIN2019\uname:pwd@xxx.xx.xx.xx:1433/db?Trusted_Connection=no&driver=ODBC Driver 17 for SQL Server'
注意:字符串前加r前缀是为了避免反斜杠被Python自动转义
2. 服务端配置校验
如果修改连接字符串后仍报错,按以下步骤检查Windows Server上的SQL Server配置:
- 确认SQL Server已开启「SQL Server和Windows身份验证模式」:打开SQL Server Management Studio,右键服务器实例→属性→安全性,选择对应认证模式后重启SQL Server服务生效
- 确认SQL Server配置管理器中已开启TCP/IP协议,且1433端口已开放监听
- 确认Windows Server防火墙已放行1433端口入站规则
- 确认使用的账号拥有目标数据库的访问权限
- 确认
pyodbc.drivers()输出的驱动名称与连接字符串中driver参数的取值完全一致
内容的提问来源于stack exchange,提问作者Ivan
相关产品推荐
相关产品推荐

