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

AWS EC2升级Ubuntu后浏览器无法访问,Rails连接MySQL出错求助

问题1:Rails无法连接本地MySQL(127.0.0.1:3306)

排查步骤

  • 验证本地MySQL连通性:执行mysql -u root -p -h 127.0.0.1,若连不上说明MySQL本地监听异常;若能连则问题出在Rails配置。
  • 检查MySQL服务状态:sudo systemctl status mysql,确认服务处于active (running)状态。
  • 查看MySQL监听地址:cat /etc/mysql/mysql.conf.d/mysqld.cnf | grep bind-address,确认配置的监听地址包含127.0.0.1或0.0.0.0(允许所有地址访问)。

解决方法

  1. MySQL本地监听异常:
    • 修改/etc/mysql/mysql.conf.d/mysqld.cnf,将bind-address设置为0.0.0.0(同时允许本地和外部连接),保存后重启服务:sudo systemctl restart mysql。
  2. Rails配置或版本兼容问题:
    • 打开config/database.yml的production节点,确认host: 127.0.0.1、port: 3306、username、password配置正确。
    • Ubuntu 20.04默认使用MySQL 8.0,其默认认证插件为caching_sha2_password,旧版mysql2 gem可能不支持。执行以下命令修改root用户认证方式:
      ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的root密码';
      FLUSH PRIVILEGES;
      
    • 更新mysql2 gem到支持MySQL 8.0的版本:bundle update mysql2,随后重启Rails服务。
问题2:浏览器无法访问EC2公网IP

排查步骤

  • 安全组规则:确认安全组入站规则已开放Rails服务使用的端口(直接运行Rails默认是3000,用Nginx反向代理则为80/443),来源需包含你的公网IP或0.0.0.0/0(允许所有访问)。
  • Ubuntu防火墙(ufw):执行sudo ufw status,确认对应端口已被允许。若未开放,执行sudo ufw allow 3000/tcp(替换为你的服务端口),再执行sudo ufw reload。
  • Rails监听地址:生产环境启动Rails时必须绑定0.0.0.0,否则仅允许本地访问。启动命令示例:rails s -e production -b 0.0.0.0;若用Puma/Passenger,需在配置文件中设置bind '0.0.0.0'。
  • 端口监听验证:执行netstat -tulpn | grep LISTEN,确认服务端口处于监听状态,且监听地址为0.0.0.0或EC2实例的私网/公网IP。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 11:08:36