gpt4 book ai didi

php - 在 postgres 用户上设置密码是否意味着即使将 pg_hba.conf 设置为信任也需要密码?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:56:22 26 4
gpt4 key购买 nike

我的大部分 PHP/PostgreSQL 开发都是在 Windows 7 下完成的,但我正在迁移到 Linux。我最近在 Debian Wheezy 上安装了 PHP 和 PostgreSQL,但使用 postgres 用户连接到我的 PostgreSQL 数据库时遇到了困难。我在 stackoverflow 上找到了一篇帖子,上面说要执行以下操作:

template1=# ALTER USER postgres WITH PASSWORD 'password';

最初,对于密码,我使用了一个空字符串,但没有用。接下来我使用了一个文本字符串,它允许我通过 pg_connect() 进行连接。

经过更多研究后,我发现更改 pg_hba.conf 文件并使 postgres 用户受信任才是我真正想做的……进行此更改时,如果未提供密码,我仍然会遇到错误通过 pg_connect() 为 postgres 用户,所以我的问题是:

使用密码更改 postgres 用户是否会导致 pg_connect() 需要密码,即使身份验证方法设置为信任?当我使用命令行连接时:

psql -U postgres

我没有问题...当使用 pg_connect() 通过 PHP 连接时问题就开始了。

pg_hba.conf 文件:

local   all             postgres                                trust
local all all trust
host all all 127.0.0.1/32 md5
host all all ::1/128 md5

PHP连接线:

pg_connect('host=localhost dbname=dev user=postgres');

最佳答案

将您的 pg_hba.conf 更改为:

local   all             postgres                                trust
local all all trust
host all all 127.0.0.1/32 trust
host all all ::1/128 trust

这将使您无需密码即可连接。

记得在编辑 pg_hba.conf 后重新启动(或重新加载)postgresql。

或者,您可以尝试像这样更改您的 php 代码:

pg_connect('dbname=dev user=postgres');

即使不对 pg_hba.conf 进行任何更改,这也应该可以工作。

解释:

您可以通过 unix 套接字(建议,更快)或通过 TCP/IP 连接到 postgres。 pg_hba.conf中第一行和第二行是socket相关的,第三行是ipv4的,第四行是ipv6的。如果您在代码中指定了 localhost,那么您将通过 TCP/IP (ipv4) 进行连接,这就是它不起作用并询问您密码的原因。

如果您仅使用 psql -U postgres 通过控制台连接,则您使用的是 unix 套接字,这就是它无需密码即可工作的原因。

别担心,即使更改了配置,也只有本地连接才能获得无密码访问权限。

关于php - 在 postgres 用户上设置密码是否意味着即使将 pg_hba.conf 设置为信任也需要密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17702835/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com