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

Ubuntu环境下AWS EC2远程MySQL服务器连接失败求助

无法连接AWS EC2上的远程MySQL服务器(Ubuntu系统)

已完成的配置操作

  • 修改远程服务器/etc/mysql/mysql.conf.d/mysqld.cnf中的bind-address为0.0.0.0
  • 创建远程用户并授权:
    CREATE USER 'username'@'%' IDENTIFIED BY 'password';
    GRANT ALL ON mydb.* TO 'username'@'%';
    
  • 执行sudo service mysql restart重启MySQL服务
  • 通过sudo ufw allow 3306开放防火墙3306端口
  • 尝试配置sshd: <IP_addresses_to_whitelist>并执行sudo service ssh restart重启SSH服务

问题现象

本地Ubuntu机器及其他EC2实例均无法连接,执行telnet 13.127.232.87 3306超时。远程MySQL服务运行正常,日志无错误,仅输出:

Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2023-05-21T07:18:42.452577Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '127.0.0.1' port: 33060, socket: /var/run/mysqld/mysqlx.sock
2023-05-21T07:18:42.452831Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.33-0ubuntu0.22.04.2'  socket: '/var/run/mysqld/mysqld.sock' 

排查与解决建议

  1. 检查AWS安全组规则
    登录AWS控制台,找到目标EC2实例所属的安全组,添加入站规则:允许3306端口的流量来源(可暂时设为0.0.0.0/0测试,后续再限制特定IP)。EC2安全组优先级高于系统防火墙,即使UFW开放端口,安全组不允许仍无法连接。

  2. 确认MySQL监听状态
    在EC2实例上执行netstat -tulpn | grep mysqld,确认mysqld是否监听0.0.0.0:3306。若显示127.0.0.1:3306,说明配置未生效:检查是否有其他配置文件(如/etc/mysql/my.cnf)覆盖了bind-address,或用journalctl -u mysql.service查看重启时的详细日志。

  3. 验证用户权限
    登录MySQL执行SELECT user, host FROM mysql.user;,确认username对应的host为%。执行FLUSH PRIVILEGES;确保权限生效后重试连接。

  4. 本地连接测试
    在EC2实例本地执行mysql -u username -p -h 13.127.232.87,若能连接,说明MySQL配置和用户无问题,故障在网络层面(安全组/路由);若本地也无法连接,重点排查MySQL配置与权限。

  5. 系统防火墙验证
    执行sudo ufw status确认3306端口规则生效,或暂时关闭UFW(sudo ufw disable)测试连接,排除系统防火墙的干扰。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 05:35:18