亚马逊EC2实例MySQL无法通过域名远程连接,IP连接正常求助
解决MySQL无法通过域名远程连接的问题
听起来你已经搞定了HTTPS环境和IP远程连接,却卡在域名连接这一步,我来帮你梳理下可能的原因和解决办法:
1. 先确认域名解析是否准确指向EC2实例IP
首先得排查最基础的DNS解析问题,在本地终端跑以下命令验证:
nslookup mysiteweb.com # 或者用dig工具更详细查看 dig mysiteweb.com
如果返回的IP和你用来成功连接的EC2公网IP不一致,那问题就出在域名解析上,需要去你的域名服务商后台修正A/AAAA记录,确保域名指向正确的EC2公网IP。
2. 检查安全组/网络ACL的端口规则
虽然用IP能连,但要注意:用域名连接本质是解析成IP后再连接,要确保所有解析到该域名的IP都能通过EC2的安全组和VPC网络ACL访问3306端口:
- 安全组:入站规则添加TCP 3306端口,测试阶段可以临时开放
0.0.0.0/0(测试完成后记得改回限定IP,保障安全)。 - 网络ACL:因为是双向规则,入站和出站都要允许TCP 3306端口的流量通过。
3. 确认MySQL的绑定地址配置
虽然你用IP能连,但还是要检查MySQL是否允许监听所有网卡:
- 找到MySQL配置文件(常见路径:
/etc/my.cnf、/etc/mysql/my.cnf,不同系统可能有差异),查看bind-address参数:
如果参数是bind-address = 0.0.0.0127.0.0.1则只能本地连接,如果是内网IP则公网IP也无法连接,但你IP能连的话这条大概率没问题,不过确认下更稳妥。 - 修改后重启MySQL服务生效:
sudo systemctl restart mysqld # 或者用service命令 sudo service mysql restart
4. 排查本地/中间网络的拦截问题
有时候本地防火墙、杀毒软件,或者你所在网络的代理会阻止3306端口的出站连接,用telnet测试下网络连通性:
telnet mysiteweb.com 3306
如果显示Connection refused,说明是网络层面的问题;如果能正常连接,那大概率是IntelliJ的配置细节问题。
5. 检查IntelliJ的连接配置细节
再核对下IntelliJ的连接设置:
- 确认域名拼写完全正确,有没有多打/少打字符。
- 试试在JDBC URL里添加
useSSL=false(仅测试用,因为你的域名是SSL保护,但MySQL远程连接默认可能不强制SSL,先排除这个变量):jdbc:mysql://mysiteweb.com:3306/你的数据库名?useSSL=false - 确认用户名、密码和用IP连接时完全一致,没有输入错误。
6. 检查EC2实例本地防火墙规则
如果EC2实例上启用了本地防火墙(比如iptables或ufw),也要确保它允许3306端口的入站流量:
- 针对ufw:
sudo ufw allow 3306/tcp sudo ufw reload - 针对iptables:
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT sudo service iptables save
按照上面的步骤逐一排查,应该能定位到问题所在。
内容的提问来源于stack exchange,提问作者medkhelifi
相关产品推荐
相关产品推荐

