localhost上的pg_connect问题

时间:2010-08-31 10:08:56

标签: php postgresql database-connection

我在postgres用户上安装了postgresql的服务器。当我这样做时:

su - postgres
[entering the password]
psql

然后我可以在数据库上执行查询,这很好。

然而,从我的PHP脚本(在我自己的帐户上运行):

$dbconnection = pg_connect("host=localhost port=5432 user=postgres password=XXXXXXX ");

(密码越过密码)

然后我收到消息:

PHP警告:pg_connect():无法连接到PostgreSQL服务器:致命错误:用户“postgres”的密码验证失败 致命:第18行/home/username/script.php中的用户“postgres”密码验证失败

我在登录字符串上尝试了很多变化,但我一直收到相同的消息。我有什么想法可以解决这个问题吗?

3 个答案:

答案 0 :(得分:1)

你的postgres可能不会在网络接口上侦听,而是在文件系统套接字上侦听。如果省略host = / port =完全怎么办?

另外,如果您知道socketpath(并且它是非默认值),您可以将其用作host = argument

答案 1 :(得分:0)

pg_hba.conf的当前配置是什么?你为数据库rol“postgres”设置了密码吗? su - postgres是针对Linux用户的“postgres”,而不是针对数据库角色“postgres”。如果你可以在不输入密码的情况下启动psql,看起来pg_hba.conf使用“trust”而不是“密码”更好的“md5”。或者您是否创建了.pgpass文件?

答案 2 :(得分:-1)

注意,以下(太短)连接字符串会导致上述错误消息(“警告:pg_connect():无法连接到PostgreSQL服务器:致命:用户”halmai“中的对等身份验证失败...”) :

pg_connect("dbname=halmai user=halmai password=halmai");

但是,更完整的连接字符串效果很好:

pg_connect("host=localhost dbname=halmai user=halmai password=halmai");

我的环境:php7.0.8。