【问题标题】:Error connecting Rails 5 app database.yml to AWS RDS instance将 Rails 5 应用程序 database.yml 连接到 AWS RDS 实例时出错
【发布时间】:2026-02-08 04:45:01
【问题描述】:

我已经在这里设置了 SLL 证书:

export DATABASE_URL="mysql2://leder:password@pfhpdb.cyo1f7mucyku.eu-central-1.rds.amazonaws.com/pfhpdb?sslca=config/amazon-rds-ca-cert.pem"

在运行带有生产环境和数据库的 heroku rails 5 应用程序时,我收到以下错误:

ActionView::Template::Error (Can't connect to MySQL server on 'pfhpdb.cyo1f7mucyku.eu-central-1.rds.amazonaws.com' (101 "Network is unreachable")):

我的database.yml如下:

production:
adapter: mysql2
encoding: utf8
host: pfhpdb.cyo1f7mucyku.eu-central-1.rds.amazonaws.com
database: pfhpdb
pool: 5
username: <%= ENV['RDS_USERNAME'] %>
password: <%= ENV['RDS_PASSWORD'] %>

评论:使用 SQuirreL 连接到 RDS 时出现同样的错误 - class java.net.SocketException: Network is unreachable (connect failed)!

更新 20200503: 从这篇文章开始: Mariadb connection client: Access denied for user (using password: NO) on mysql 8.0

我无法在 MariaDB 中使用密码登录,也无法更改数据库表访问 b/c 我无法在 MariaDB 中使用密码登录。我的数据库已关闭...

【问题讨论】:

    标签: ruby-on-rails amazon-web-services heroku


    【解决方案1】:

    请检查您的RDS实例的安全组;可能你还没有打开端口。另外,请试试这个看看端口是否开放。

    $ telnet cyo1f7mucyku.eu-central-1.rds.amazonaws.com 3306
    

    【讨论】:

    • 安全组:All traffic All All 0.0.0.0/0 telnet:无法连接到远程主机:网络无法访问
    • 如果我允许所有入站流量,如何关闭端口!?
    • 是的,如果您允许所有入站;我们很好。您可以尝试使用一些 mysql 客户端(例如工作台)连接到您的 rds 吗?这样您就可以确定它不是 RAILS 问题,而是 RDS 问题。
    • 我添加了一个更新连接 w/ SQuirreL 和错误 class java.sql.SQLException: Access denied for user
    • 用户拒绝访问意味着它可以连接到数据库,而 Rails 甚至无法连接到数据库!
    【解决方案2】:

    最后,通过在 RDS 的控制台设置中重置 AWS RDS DB 管理员密码,身份验证错误消失了。

    【讨论】: