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

AWS Plesk实例MySQL远程连接失败:3306端口显示关闭求排查方案

排查MySQL远程连接失败(3306端口显示关闭)的解决方案

针对你遇到的问题,以下是逐步排查的关键点:

1. 确认MySQL实际绑定的地址

你的/etc/mysql/my.cnf中注释了bind-address = 0.0.0.0,但注意部分MySQL/MariaDB版本默认会绑定127.0.0.1(仅本地访问),且你配置里包含了子目录的配置文件(!includedir),这些子文件可能覆盖主配置:

  • 检查子配置文件,执行:
    grep -r "bind-address" /etc/mysql/conf.d/ /etc/mysql/mariadb.conf.d/
    
  • 如果输出显示bind-address = 127.0.0.1,将其修改为bind-address = 0.0.0.0(允许所有IP访问)或指定你的EC2公网IP,然后重启MySQL服务:
    sudo systemctl restart mysql
    

2. 验证MySQL服务状态与监听端口

  • 检查服务是否正常运行:
    sudo systemctl status mysql
    
    确保状态为active (running),如果未启动,执行sudo systemctl start mysql。
  • 确认MySQL实际监听的端口和地址:
    ss -tulpn | grep mysql
    
    正确输出应包含0.0.0.0:3306或你的EC2公网IP:3306,如果显示127.0.0.1:3306,说明仍仅绑定本地,需回到第一步修正配置。

3. 检查EC2网络ACL配置

EC2安全组开放端口后,网络ACL(若自定义过)可能限制流量:

  • 进入AWS控制台→EC2→你的实例→网络→查看所属的网络ACL
  • 确保入站规则允许0.0.0.0/0的TCP 3306端口,出站规则允许所有响应流量(或至少允许TCP 1024-65535端口的出站)。

4. 确认MySQL用户的远程访问权限

即使端口通了,用户没有远程权限也无法连接:

  • 登录本地MySQL:
    mysql -u root -p
    
  • 查询用户权限:
    SELECT user, host FROM mysql.user;
    
  • 若目标用户的host为localhost或特定内网IP,修改为允许远程访问:
    ALTER USER 'your_username'@'%' IDENTIFIED BY 'your_password';
    FLUSH PRIVILEGES;
    
    (%表示允许任意远程IP,也可指定你的客户端IP)

5. 检查Plesk的额外限制

Plesk的"允许来自任意主机的远程连接"设置可能被其他规则覆盖:

  • 进入Plesk→工具与设置→防火墙,确认是否添加了允许3306端口的规则,且未被其他拒绝规则优先级覆盖。
  • 检查Plesk的MySQL管理界面,确认是否对用户设置了IP访问限制。

6. 验证服务器公网IP正确性

确保你执行nmap时使用的34.34.34.34是EC2实例的公网IP(而非内网IP),内网IP仅能在VPC内部访问。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 08:27:37