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

Azure虚拟网络中如何仅向前端虚拟机开放MySQL 3306端口?

实现Azure虚拟机间仅虚拟网络内访问MySQL的操作方法

前提确认

确保两台虚拟机**处于同一个Azure虚拟网络(VNet)**中。如果不在同一VNet,优先将它们移至同一VNet;若无法迁移,可配置VNet对等连接(同VNet操作更简便)。

步骤1:配置数据库VM的网络安全组(NSG)

NSG是控制VM流量的核心,通过它仅允许前端VM访问3306端口:

  • 登录Azure门户,找到MySQL数据库VM,进入左侧菜单「设置」-「网络」,打开其关联的网络安全组。
  • 切换到「入站安全规则」标签,点击「添加」:
    • 优先级:设置为比默认拒绝规则更高的数值(例如100,数字越小优先级越高)。
    • 源:选择「IP地址」,填入前端Node.js VM的私有IP地址(注意不是公网IP)。
    • 源端口范围:留空(允许前端VM从任意端口发起连接)。
    • 目标:选择「任意」或直接指定数据库VM的私有IP。
    • 目标端口范围:输入3306。
    • 协议:选择「TCP」(MySQL默认使用TCP协议)。
    • 操作:选择「允许」。
    • 名称:自定义易识别的名称,比如Allow-Frontend-to-MySQL-3306。
  • 保存规则。

步骤2:调整MySQL自身配置

确保MySQL允许来自前端VM私有IP的连接:

  • 登录数据库VM,编辑MySQL配置文件(常见路径为/etc/mysql/mysql.conf.d/mysqld.cnf或/etc/my.cnf):
    • 找到bind-address项,将值改为0.0.0.0(结合NSG规则仅开放给前端VM),或直接指定前端VM的私有IP。
  • 重启MySQL服务:
    Ubuntu/Debian系统:sudo systemctl restart mysql
    CentOS/RHEL系统:sudo service mysqld restart
  • 在MySQL中创建授权用户:
    CREATE USER 'your_db_user'@'frontend_vm_private_ip' IDENTIFIED BY 'your_password';
    GRANT ALL PRIVILEGES ON your_target_db.* TO 'your_db_user'@'frontend_vm_private_ip';
    FLUSH PRIVILEGES;
    

步骤3:测试跨VM连接

在前端Node.js VM上验证连接是否生效:

  • 安装MySQL客户端(若未安装):
    Ubuntu:sudo apt install mysql-client
    CentOS:sudo yum install mysql
  • 执行连接命令:mysql -h mysql_vm_private_ip -u your_db_user -p,输入密码后若能进入MySQL命令行,说明配置成功。

额外建议

  • 移除数据库VM的公网IP(若已分配):在VM的网络设置中禁用公网IP,彻底规避公网暴露风险。
  • 若两台VM在不同VNet:配置VNet对等连接后,将NSG规则的源设置为前端VNet的地址空间,而非单个IP。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 03:57:06