通过远程IP地址连接到PostgreSQL数据库,我已经使用pgAdmin III通过Windows成功了,但是每当我尝试使用pg_connect()
使用标准php-pgsql
库从本地CentOS 6 ApacheWeb服务器连接时,我都会出错。
笔记:
- 我无法控制远程服务器,但如果需要,可以查询其他信息。
- 我的密码确实包含一个特殊字符(尽管它不是引号字符)。
信用证如下:
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/
目录中添加/取消注释extension=pgsql.so
并service httpd restart
.我什至已经打开了我的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
提前感谢:-)
根据您的 postgresql 连接问题,此解决方案可能有效。 我只是从PHP手册中获取这个答案,我不确定,所以请参阅此处以获取更多 http://php.net/manual/en/function.pg-connect.php#38291
应尝试将 host= 和 port= 部分保留在连接字符串之外。这听起来很奇怪,但这是Postgre的一个"选项"。如果您尚未在 postgresql.conf 中激活 TCP/IP 端口,则 postgresql 不接受来自 TCP/IP 端口的任何传入请求。