我在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”密码验证失败
我在登录字符串上尝试了很多变化,但我一直收到相同的消息。我有什么想法可以解决这个问题吗?
答案 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。