Linux环境Python连接SQL Server遇Kerberos错误,如何改用账号密码登录?
解决Linux下Python连接SQL Server的Kerberos凭证问题
核心解决方案:强制使用账号密码认证(跳过Kerberos)
直接修改连接字符串,明确禁用Kerberos/AD集成认证逻辑,改用代码中指定的UID和密码完成登录,无需依赖Linux机器上的Kerberos配置。
具体修改要点
- 移除连接字符串中
Trusted_Connection=yes、Authentication=ActiveDirectoryIntegrated这类AD/Kerberos相关参数 - 添加
UID=<你的用户名>、PWD=<你的密码>参数 - 关键:加入
Authentication=SqlPassword强制使用账号密码认证,彻底绕过Kerberos
示例代码
import pyodbc # 构造连接字符串 conn_str = ( "Driver={ODBC Driver 18 for SQL Server};" "Server=tcp:你的SQL服务器地址,1433;" "Database=目标数据库名;" "UID=你的登录账号;" # 支持DOMAIN\用户名格式的AD账号 "PWD=你的登录密码;" "Encrypt=yes;" "TrustServerCertificate=no;" "Authentication=SqlPassword;" # 核心参数:强制用密码认证 ) try: conn = pyodbc.connect(conn_str) print("数据库连接成功") # 执行后续数据库操作 conn.close() except pyodbc.Error as e: print(f"连接失败: {str(e)}")
补充说明
- 如果使用的是SQL Server本地账号(非AD域账号),直接填写本地账号的UID和密码即可
- 若必须使用AD域账号,需确保该账号已在SQL Server中配置了对应登录权限
Encrypt和TrustServerCertificate参数可根据SQL Server的实际安全配置调整(测试环境可临时设TrustServerCertificate=yes)
内容的提问来源于stack exchange,提问作者Chaithra. m.c
相关产品推荐
相关产品推荐

