MySQL Workbench连接私有访问Azure MySQL弹性服务器报错:无法连接localhost
解决Azure Database for MySQL Flexible Server私有访问连接问题(Unable to connect to localhost)
核心问题分析
你的问题核心是私有DNS解析失败,导致MySQL Workbench无法正确定位服务器,进而出现"Unable to connect to localhost"的异常 fallback 错误;同时需要排查网络连通性和连接配置细节。
分步解决思路
1. 确认私有DNS区域配置
- 检查Azure门户中自动生成的私有DNS区域(通常为
privatelink.mysql.database.azure.com)与目标VNet的链接状态:确保VNet已链接到该DNS区域,只有链接后的VNet(包括通过VPN接入的客户端)才能解析私有域名。 - 验证DNS区域内的A记录:确认
pw对应的A记录指向10.0.0.4,记录状态正常。
2. 修复客户端DNS解析
点到站点VPN默认不会自动推送Azure私有DNS服务器地址给客户端,需手动配置:
- 临时测试方案:在本地
hosts文件(Windows路径:C:\Windows\System32\drivers\etc\hosts;Linux/macOS路径:/etc/hosts)中添加映射:
添加后重新执行10.0.0.4 pw.mysql.database.azure.comnslookup pw.mysql.database.azure.com,确认能解析到正确IP。 - 永久解决方案:在Azure VPN网关的点到站点配置中,添加自定义DNS服务器,填入Azure私有DNS区域的服务器IP(可在DNS区域概览页获取);重新下载VPN客户端配置文件并导入,确保客户端使用该DNS服务器解析私有域名。
3. 验证网络连通性
VPN连接成功后,先排除网络层面的问题:
- 执行
ping 10.0.0.4,检查是否能连通服务器内网IP;如果ping不通,检查VNet的网络安全组(NSG):- 确认NSG入站规则允许来自点到站点地址池
10.0.2.0/24的3306端口流量; - 确认MySQL服务器的防火墙规则已添加
10.0.2.0/24地址段的访问权限。
- 确认NSG入站规则允许来自点到站点地址池
- 执行
telnet 10.0.0.4 3306或nc -zv 10.0.0.4 3306,验证3306端口是否开放。
4. 修正MySQL Workbench连接配置
- Hostname:确保填写完整的服务器FQDN
pw.mysql.database.azure.com,不要误填localhost; - 用户名:使用正确格式
pwuser@pw(用户名@服务器短名称,服务器短名称为pw); - SSL配置:
- 先尝试临时关闭SSL(仅用于测试),如果能连接,再重新配置CA文件路径(确保路径正确,CA文件为Azure官方提供的证书);
- 确认服务器是否强制SSL:可在Azure门户服务器的"连接安全"页查看,若强制SSL则必须开启并配置正确的CA文件。
5. 排查VPN连接细节
- 确认VPN连接获取的内网IP属于
10.0.2.0/24地址池; - 检查VPN客户端的路由表,确认目标VNet的
10.0.0.0/24和10.0.1.0/24地址段已通过VPN路由。
内容的提问来源于stack exchange,提问作者Fabricio Rodriguez
相关产品推荐
相关产品推荐

