postgresql - 无法通过 EC2 连接到 Amazon PostgreSQL RDS

标签 postgresql amazon-web-services amazon-ec2 amazon-rds amazon-ebs

我目前在 Amazon RDS 上设置了 PostgreSQL 数据库。数据库连接到运行 Rails 应用程序的 Elastic Beanstalk 服务器,并且 Rails 应用程序可以正常工作(在生产站点上,我可以很好地修改数据库。我也可以通过 SQL 工作台很好地查看数据库,并且我可以看到我在生产站点上所做的更改反射(reflect)在数据库中)。

所以我知道数据库工作正常,我的弹性 beanstalk 服务器连接到它很好,我的 Rails 应用程序连接到它也很好。

但是,当我尝试通过我的 EC2 实例连接到数据库时(注意:此实例与我的 EB 和 RDS 实例(弗吉尼亚北部)位于不同的区域(俄亥俄州),我收到此错误:

psql: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

目录/var/run/postgresql 存在,但该文件不存在。我尝试从根目录搜索该文件,结果发现它根本不存在。

这是一个问题,因为我需要能够远程为数据库播种,并且尝试从控制台运行 rake db:seed 会产生此错误。当我在生产环境中运行 Rails 控制台并尝试查看属于数据库的任何内容时,也会出现该错误。

这是我的config/database.yml文件:

default: &default
  adapter: sqlite3
  pool: 5
  timeout: 5000

development:
  <<: *default
  database: db/development.sqlite3

test:
  <<: *default
  database: db/test.sqlite3

production:
    <<: *default
    adapter: postgresql
    encoding: unicode
    database: <%= ENV['RDS_DB_NAME'] %>
    username: <%= ENV['RDS_USERNAME'] %>
    password: <%= ENV['RDS_PASSWORD'] %>
    host: <%= ENV['RDS_HOSTNAME'] %>
    port: <%= ENV['RDS_PORT'] %>

这就是 EB 如何知道在部署时连接到 PG 数据库。

我已尝试编辑我的 RDS 的安全规则以接受来自 EC2 的公共(public) IP 的 PostgreSQL 连接,但这似乎不起作用。

谁能帮我解决这个问题?

编辑:

好的,我可以使用带有指定服务器选项的 psql 命令连接到远程数据库。我通过执行一个简单的查询对其进行了测试,我确信连接已建立。不过,我现在不确定如何让服务器自动连接到它。

最佳答案

看起来您的应用程序正在尝试连接到本地主机上的 PostgreSQL;看起来你的 config/database.yml 文件是正确的,因为它正在寻找环境变量 RDS_HOSTNAME - 所以我最好的猜测是你没有设置它并且它默认为您的本地主机,因为它是空的。

您需要设置此环境变量以及此处说明的其他项目(数据库、用户、密码和端口)才能使其正常工作。

This StackOverflow answer说明如何为 Elastic Beanstalk 设置环境变量。

关于postgresql - 无法通过 EC2 连接到 Amazon PostgreSQL RDS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47545364/

相关文章:

mysql - NVME SSD 会加速繁重的查询吗?选择大偏移量/表扫描等?

typescript - 如何使用 AWS CDK 检测控制台/堆栈偏差

shell - 连接到 AWS 时 SSH 卡住

postgresql - 使用 PostGIS 和 OpenLayers 的最佳方式是什么?

postgresql - 无法从 SQLite 切换到 Postgres

mysql - 使用腻子在 AWS RDS 上上传大型 mysql 数据库 - 'MySQL server has gone away'

amazon-web-services - S3 "US Standard"区域与 EC2 中的 "us-east-1"区域相同吗?

hadoop - 无法连接到 Cloudera Manager,未监听端口 7180

PostgreSQL 9.5 : Skip first two lines in the text file

node.js - AWS elastic beanstalk Node.js 应用程序未连接到 Mongodb atlas