带有“密码”验证的 PostgreSQL pg_hba.conf 无法与 PHP pg_connect 一起使用吗?

带有“密码”验证的 PostgreSQL pg_hba.conf 无法与 PHP pg_connect 一起使用吗?

我最近尝试了 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 连接到数据库时没有遇到任何问题。希望这能帮助遇到此问题的人 :)

相关内容