使用Node.js连接Azure Database for MySQL时连接失败该如何解决
Azure Database for MySQL 连接失败排查步骤
- 首先排查网络访问限制
Azure默认拦截所有未授权的公网访问请求,你需要先登录Azure门户,进入对应的MySQL实例页面,打开「连接安全」设置,将运行Node.js代码设备的公网IP添加到入站白名单中,同时确认本地网络、运营商没有封禁3306端口的出站请求。 - 修正连接参数配置
- 用户名格式错误:Azure Database for MySQL的默认用户名格式为 <用户名>@<数据库实例名>,你当前仅填写
admin不符合要求,需要补全后缀,例如admin@mysql-demo01 - Host地址错误:Azure MySQL的公网访问地址为固定域名(格式为
<实例名>.mysql.database.azure.com),直接填写IP地址会因为实例弹性IP变动导致连接失败,建议替换为官方提供的域名 - 数据库名校验:确认你要连接的目标数据库确实命名为
admin,测试阶段可以先删除配置中的database参数,先验证基础连通性再指定库名
- 用户名格式错误:Azure Database for MySQL的默认用户名格式为 <用户名>@<数据库实例名>,你当前仅填写
- 补充SSL连接配置
Azure Database for MySQL默认强制开启SSL连接,你当前的配置没有添加SSL相关参数,需要在createConnection的配置项中添加ssl: { rejectUnauthorized: true },测试环境可临时设置为false跳过证书校验,生产环境建议使用Azure官方提供的根证书。 - 替换适配的依赖包
旧版mysqlnpm包对新版MySQL协议和Azure的SSL适配存在兼容性问题,建议替换为mysql2包:执行npm uninstall mysql && npm install mysql2,再重新运行代码测试。 - 本地先做连通性验证
先跳过Node.js代码,直接用本地MySQL命令行工具测试连接:mysql -h <你的Azure MySQL域名> -u <完整用户名> -p,如果命令行无法连接,说明问题出在网络、账号权限层面,和代码无关。

内容的提问来源于stack exchange,提问作者Keltouma Indtaher
相关产品推荐
相关产品推荐

