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

WSL2 Ubuntu中Flask应用无法连接Azure SQL Server且无法ping通

解决WSL2中Flask应用连接Azure SQL Server失败的问题

首先纠正一个关键误区:Azure SQL Server默认禁止ICMP(ping)请求,所以WSL2终端ping不通属于正常现象,无需以此判断连接失败的核心原因,重点应放在数据库连接本身的错误排查上。

以下是具体排查与解决步骤:

1. 核对Azure SQL Server防火墙规则

  • 在WSL2终端执行curl ifconfig.me获取当前设备的公网出口IP(而非WSL2内网IP,因为WSL2通过Windows主机走公网),登录Azure门户,进入目标SQL服务器的「防火墙和虚拟网络」页面,将该公网IP添加到防火墙允许列表中。
  • 若本地测试连接,可临时开启「允许Azure服务和资源访问此服务器」选项,验证是否因防火墙规则导致连接失败。

2. 修复WSL2网络配置问题

WSL2默认NAT模式可能存在DNS解析或路由异常:

  • 重置WSL2网络:在Windows终端执行wsl --shutdown,重启WSL2后重新加载网络配置。
  • 手动配置DNS:创建/etc/wsl.conf文件并写入以下内容,避免WSL2自动覆盖DNS配置:
    [network]
    generateResolvConf = false
    
    重启WSL2后,编辑/etc/resolv.conf,添加公共DNS服务器(如nameserver 8.8.8.8)。

3. 检查Flask应用连接字符串与驱动

  • 确保连接字符串符合Azure SQL要求,示例格式:
    import pyodbc
    server = '<你的服务器名>.database.windows.net'
    database = '<你的数据库名>'
    username = '<用户名>'
    password = '<密码>'
    driver = '{ODBC Driver 18 for SQL Server}'
    conn_str = f'DRIVER={driver};SERVER={server};DATABASE={database};UID={username};PWD={password};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;'
    conn = pyodbc.connect(conn_str)
    
    注意必须设置Encrypt=yes,Azure SQL强制加密连接。
  • 在WSL2 Ubuntu中安装所需ODBC驱动:
    sudo apt-get install unixodbc unixodbc-dev
    # 安装微软ODBC Driver 18
    sudo curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
    sudo curl https://packages.microsoft.com/config/ubuntu/22.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
    sudo apt-get update
    sudo ACCEPT_EULA=Y apt-get install msodbcsql18
    

4. 排查Windows代理与防火墙

  • 若Windows开启了代理,WSL2不会自动继承代理设置,需在WSL2终端手动配置环境变量:
    export http_proxy=http://<Windows主机内网IP>:<代理端口>
    export https_proxy=http://<Windows主机内网IP>:<代理端口>
    
    或临时关闭代理测试连接。
  • 确认Windows防火墙未阻止WSL2的出站请求,可临时关闭Windows Defender防火墙验证,若能正常连接,再创建允许WSL2出站到1433端口(SQL Server默认端口)的规则。

5. 测试端口连通性

在WSL2终端用nc工具测试Azure SQL的1433端口是否可达:

nc -zv <你的服务器名>.database.windows.net 1433

若返回成功提示,说明网络链路正常,问题出在应用或驱动配置;若失败,回到Azure防火墙与WSL2网络配置环节重新排查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 22:30:14