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

如何从本地Spring应用连接Azure虚拟网络内的MySQL数据库

本地Spring应用连接Azure VNet内MySQL的解决方案

因为你的MySQL数据库仅允许Azure虚拟网络内的资源访问,要让本地Spring应用连上,核心是把本地机器接入Azure VNet的网络环境,下面是几种实用的实现方式:

方法一:点到站点(P2S)VPN连接(长期访问首选)

这是最常用的方案,相当于把本地机器“拉进”Azure VNet,之后就能直接访问VNet内的MySQL:

  • 在Azure门户创建VPN网关,关联到目标VNet,选择支持点到站点的SKU(比如VpnGw1)
  • 配置点到站点VPN:选择客户端协议(推荐IKEv2或OpenVPN),添加客户端地址池(比如192.168.10.0/24,不要和本地网段冲突)
  • 下载VPN客户端配置文件,在本地机器安装并连接到Azure VPN
  • 验证连通性:用telnet <mysql私有IP> 3306或nc -zv <mysql私有IP> 3306测试,能通就说明网络没问题
  • 修改Spring应用的数据库配置:
    spring.datasource.url=jdbc:mysql://<mysql私有IP>:3306/你的数据库名?useSSL=true&serverTimezone=UTC
    spring.datasource.username=你的用户名
    spring.datasource.password=你的密码
    

方法二:Azure Bastion端口转发(临时访问首选)

如果只是临时调试,不想搭建VPN,用Bastion做端口转发更快捷:

  • 确保目标VNet已经部署了Azure Bastion服务
  • 用Azure CLI执行端口转发命令(也可以在Azure门户操作):
    az network bastion tunnel --name 你的Bastion名称 --resource-group 资源组名称 --target-resource-id MySQL的资源ID --port 3306 --local-port 3306
    
  • 命令执行后,本地的localhost:3306会映射到MySQL的3306端口
  • Spring应用配置直接指向本地端口:
    spring.datasource.url=jdbc:mysql://localhost:3306/你的数据库名?useSSL=true&serverTimezone=UTC
    

方法三:Private Endpoint + 本地DNS解析(适合生产级长期访问)

如果你的MySQL配置了Private Endpoint(推荐生产环境用),需要让本地能解析Private Endpoint的域名:

  • 获取MySQL Private Endpoint的私有IP和FQDN(完全限定域名)
  • 临时方案:在本地机器的hosts文件(Windows是C:\Windows\System32\drivers\etc\hosts,Linux/macOS是/etc/hosts)添加一行:
    <Private Endpoint私有IP>  <MySQL的FQDN>
    
  • 长期方案:配置Azure DNS私有区域,将本地DNS服务器与Azure DNS私有区域关联(需要通过VPN或ExpressRoute打通本地和Azure的DNS解析),之后本地就能自动解析Private Endpoint的域名

注意事项

  • 确认MySQL的VNet防火墙规则已经允许对应VNet子网的流量(如果用P2S VPN,要允许VPN客户端地址池的网段)
  • 本地机器的防火墙要允许 outbound 到3306端口的流量
  • Spring应用的MySQL驱动版本要与数据库版本兼容,避免连接报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 09:35:13