【问题标题】:How to use your own mysql database server with heroku?如何将自己的mysql数据库服务器与heroku一起使用?
【发布时间】:2020-06-30 07:10:41
【问题描述】:

我想使用托管在我自己的服务器上的 mysql 数据库。 我已将 DATABASE_URL 和 SHARED_DATABASE_URL 配置变量更改为指向我的服务器,但它仍在尝试连接到 heroku 的 amazonaws 服务器。我该如何解决?

【问题讨论】:

    标签: ruby heroku


    【解决方案1】:

    根据Heroku documentation,改DATABASE_URL才是正确的做法。

    如果您想让 Rails 应用程序连接到非 Heroku 提供的数据库,您可以利用相同的机制。只需将您的 DATABASE_URL 配置变量设置为指向任何云可访问的数据库,Heroku 将自动创建您的 database.yml 文件以指向您选择的服务器。 Amazon RDS 插件会自动为您执行此操作,但您也可以使用相同的方法连接到非 RDS 数据库。

    这是一个应该可以工作的例子:

    heroku config:add DATABASE_URL=mysql://user:password@host/db

    您可能需要通过更改并运行 git push heroku master 来重新部署

    【讨论】:

    • 做到了,但没有帮助。它在日志中说 Mysql::Error (Access denied for user 'mydbname'@'ec2-184-72-153-138.compute-1.amazonaws.com' (using password: YES)):
    • 所以它使用我在 DATABASE_URL 中指定的 db_name,但仍在尝试连接到 amazonaws 服务器
    • 有趣。我更新了答案以包含密码字段。你也指定了吗?如果是这样,我会继续挖掘。
    • 是的,我使用带有用户名和密码的完整网址
    • 你传递的字符串中的mysql实际上是gem名称吗?如果您需要例如传递数据库的编码?
    【解决方案2】:

    顺便说一句,主机是 XXXX.amazonaws.com,其中 XXX 是一个长主机名,可能会发生变化。如果可以加通配符,那是最简单的%.amazonaws.com

    【讨论】:

      【解决方案3】:

      我的 Dreamhost MySQL 数据库也有同样的问题。原来解决方案是告诉 Dreamhost 可以接受来自这个外国主机的连接。否则,Dreamhost 会阻止所有非来自其系统的对 MySQL 的请求。

      似乎如果 Heroku 回退到 Amazon AWS,尽管您有 DATABASE_URL,那是因为它被拒绝访问您的 MySQL 数据库。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-10-23
        • 1970-01-01
        • 2023-03-04
        • 1970-01-01
        • 2018-08-20
        • 1970-01-01
        • 2012-04-21
        相关资源
        最近更新 更多