我最近尝试了 pg_hba.conf 中的设置。我阅读了 PostgreSQL 文档,我认为“密码”身份验证方法正是我想要的。有很多人可以访问 PostgreSQL 正在运行的服务器,所以我不想要“信任”方法。所以我更改了它。但后来 PHP 停止与数据库一起工作。
我收到的消息是“警告:pg_connect():无法连接到 PostgreSQL 服务器:严重错误:/my/path/to/connection/class.php 第 35 行中用户“myuser”的密码验证失败”。这有点奇怪,因为我可以通过 phppgadmin 连接而没有任何问题,而且我可以使用 psql 从我的家用电脑连接 - 同样没有任何问题。
这是我的pg_hba.conf:
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all password
# IPv4 local connections:
host all all 127.0.0.1/32 password
# IPv6 local connections:
host all all ::1/128 password
我与 pg_conenct 一起使用的连接字符串是:
$connect_string = "host=localhost port=5432 dbname=mydbname user=auser password=apassword";
$dbConnection = pg_connect($connection_string);
有人知道为什么会这样吗?我配置错误了吗?
答案1
看来,当您的密码包含斜线 (\ /) 时,您需要在 pg_connect 连接 URL 中对其进行转义。转义后,我通过 php 连接到数据库时没有遇到任何问题。希望这能帮助遇到此问题的人 :)