You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux虚拟机连接Azure SQL Server时出现登录超时错误求助

Linux虚拟机上Python+SQLAlchemy连接Azure SQL Server(AD密码认证)遇登录超时问题

我正尝试在Linux虚拟机上使用Python和SQLAlchemy连接Azure SQL Server(采用Active Directory密码认证),但遇到登录超时错误:

sqlalchemy.exc.OperationalError: (pyodbc.OperationalError) ('HYT00', '[HYT00] [unixODBC][Microsoft][ODBC Driver 18 for SQL Server]Login timeout expired (0) (SQLDriverConnect)')
(Background on this error at: https://sqlalche.me/e/14/e3q8)

虚拟机上已安装的ODBC驱动信息:

[ODBC Driver 18 for SQL Server]
Description=Microsoft ODBC Driver 18 for SQL Server
Driver=/opt/microsoft/msodbcql18/lib64/libmsodbcsql-18.1.so.2.1
UsageCount=1

使用的连接字符串代码如下:

driver= "ODBC Driver 18 for SQL Server", endpoint="####-####.database.windows.net", dbname="sql#####", user="xxxxx@xxx.com", password="abc123"

connection_string = "DRIVER={};SERVER={},port=1433;DATABASE={};UID={};PWD={};Authentication=ActiveDirectoryPassword;".format(driver, endpoint, dbname, user, password)

connection_url = URL.create("mssql+pyodbc", query={"odbc_connect": connection_string})

engine = sqlalchemy.create_engine(connection_url, fast_executemany=True, pool_size=100) 
conn = engine.connect()

备注:

  • SQL Server仅启用Active Directory密码认证
  • 已尝试使用IP地址替代端点,问题仍未解决

排查与解决建议

1. 网络连通性验证

  • 在Linux虚拟机执行以下命令,检查1433端口连通性:
    nc -zv ####-####.database.windows.net 1433
    
    若不通,检查:
    • 虚拟机出站防火墙是否允许访问1433端口
    • Azure SQL Server防火墙规则是否添加了该虚拟机的公网IP
    • 若使用VNet集成,确认虚拟网络 peering 或服务端点配置正确

2. 修正连接字符串参数

  • 端口分隔符错误:将SERVER={},port=1433改为SERVER={}:1433,正确的连接字符串格式:
    connection_string = "DRIVER={};SERVER={}:1433;DATABASE={};UID={};PWD={};Authentication=ActiveDirectoryPassword;".format(driver, endpoint, dbname, user, password)
    
  • 若遇证书验证问题,可临时添加Encrypt=Optional参数测试(生产环境建议保持加密):
    connection_string = "DRIVER={};SERVER={}:1433;DATABASE={};UID={};PWD={};Authentication=ActiveDirectoryPassword;Encrypt=Optional;".format(driver, endpoint, dbname, user, password)
    

3. 检查ODBC驱动依赖

  • 确认安装unixODBC开发包:
    # CentOS/RHEL
    sudo yum install unixODBC-devel
    # Debian/Ubuntu
    sudo apt-get install unixodbc-dev
    
  • 检查驱动路径拼写:原驱动信息中msodbcql18疑似笔误,应为msodbcsql18,执行ls /opt/microsoft/确认目录是否正确

4. AD账号与权限验证

  • 在Azure Portal的SQL Server查询编辑器中,使用该AD账号(xxxxx@xxx.com)登录,验证账号有效性与密码正确性
  • 检查虚拟机是否能访问Azure AD认证端点:
    curl https://login.microsoftonline.com
    

内容的提问来源于stack exchange,提问作者Nirmal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 03:20:24