【发布时间】:2015-03-08 22:01:37
【问题描述】:
通过远程 IP 地址连接到 PostgreSQL 数据库,我已经使用 pgAdmin III 通过 Windows 成功,但是每当我尝试使用标准 php-pgsql 库使用 @987654323 从本地 CentOS 6 Apache Web 服务器连接时都会出错@。
注意事项:
- 我无法控制远程服务器,但如果需要可以查询其他信息。
- 我的密码确实包含一个特殊字符(虽然它不是引号字符)。
积分如下:
Host (IP): xx.xx.xx.xx
Port: 5432
DBname: sandbox
Username: abc
Password: ***
MaintenanceDB: template1
这是我尝试在本地服务器上运行的 PHP 代码:
pg_connect("host=xx.xx.xx.xx port=5432 dbname=sandbox user=abc password=***");
我也试过了:
pg_connect("host=xx.xx.xx.xx port=5432 dbname=template1 user=abc password=***");
当我尝试连接时,我收到以下错误:
Warning: pg_connect(): Unable to connect to PostgreSQL server: could not connect to server: Permission denied Is the server running on host "xx.xx.xx.xx" and accepting TCP/IP connections on port 5432?
我已在/etc/php.d/ 目录和service httpd restart 中添加/取消注释extension=pgsql.so。我什至已经打开了我的iptables 端口,所以毫无疑问本地防火墙端口被阻止:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 5432 -j ACCEPT
提前致谢:-)
【问题讨论】:
-
您确定登录凭据正确吗?
-
我能够通过 pgAdmin III 进行连接,这表明凭据正确并且已启用远程访问。我不确定维护数据库如何适应 PHP 端(也许是 OPTION 参数?)以及是否还有其他我遗漏的东西。
-
对我来说,看起来像防火墙问题。你能暂时禁用 CentOS 上的防火墙,然后再试一次吗?
-
上周我也遇到了同样的问题,看看这个:stackoverflow.com/questions/27749691/…
-
请注意我的重复投票:当尝试与 postgres 建立 TCP 连接 时,关键是 Permission denied。 CentOS/Redhat 上的这种特殊组合总是由于 SELinux 未配置为允许 HTTP 服务器发出出站连接。
标签: php postgresql php-pgsql