【发布时间】:2015-02-13 19:07:53
【问题描述】:
我正在使用 Amazon EC2 和 PostgreSQL/Apache 运行 Red Hat Linux 服务器,但遇到了一些问题。当我尝试在浏览器中访问我的应用时,我收到以下错误:
Unable to connect to the database
could not connect to server: Permission denied
Is the server running on host "my-private-ip-address" and accepting
TCP/IP connections on port 5432?
但是,我可以在 PuTTY 中使用以下命令访问我的数据库。我还可以在 pgAdmin 中连接到我的数据库。
psql -U username -h my-private-ip -d dbname
我使用here 和here 找到的说明编辑了我的pg_hba.conf 和postgres.conf 文件,但不幸的是它们对我不起作用。我的入站安全组设置如下:
Type Protocol Port Range Source
Custom TCP Rule TCP 5432 Anywhere 0.0.0.0/0
HTTP TCP 80 Anywhere 0.0.0.0/0
HTTPS TCP 443 Anywhere 0.0.0.0/0
我错过了什么或做错了什么?感谢您的帮助。
编辑:我刚刚尝试禁用 SELinux,然后它能够连接到数据库,并且浏览器中没有错误。但我想保持 SELinux 开启以增强安全性。我猜这个问题与文件权限或防火墙设置有关。
Edit v2:我想我已经解决了,但如果这是正确的做法,我仍然希望得到一些人的意见。我找到了下面的命令here 让Apache和PostgresSQL相互连接:
setsebool -P httpd\_can\_network\_connect\_db on
【问题讨论】:
-
您的应用程序和数据库是否在同一台服务器上运行
-
@JoeLove 是的。我刚刚编辑了我的问题。我使用
setsebool -P httpd\_can\_network\_connect\_db on来允许 Apache 和 PostgreSQL 相互通信。 -
您是否尝试过为您的应用配置使用 localhost 而不是实际 IP?根据您的服务器,您可以使用可能更快的 unix 套接字。
-
@JoeLove 是的,我确实尝试过
localhost,但它导致了同样的错误。
标签: postgresql amazon-ec2 database-connection