我有一个PERN堆栈是不工作,由于以下'错误:用户“postgres”的密码验证失败。
在Ubuntu 22.04.2上运行的postgres(14.8)中,我可以从(Ubuntu)用户ubuntu
或postgres
登录postgres,使用环境变量和对等身份验证。命令psql -d testdb
让我以ubuntu登录。printenv
:
PGPORT=5432
PGPASSWORD=password
PGUSER=ubuntu
PGDATABASE=testdb
PGHOST=localhost
所以上面的工作正常,但是我的express.js应用程序发出了一个请求,导致'error:用户“postgres”的密码验证失败,并且浏览器中的网关超时504。
下面是/etc/postgresql/14/main/pg_hba.conf:
# Database administrative login by Unix domain socket
local all postgres peer
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 scram-sha-256
# IPv6 local connections:
host all all ::1/128 scram-sha-256
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all peer
host replication all 127.0.0.1/32 scram-sha-256
host replication all ::1/128 scram-sha-256
我需要做些什么来配置(Ubuntu)用户www-data
,使其使用自己的环境变量访问postgres?
有人知道这是怎么回事吗?
1条答案
按热度按时间iklwldmw1#
我找到了一个编程解决方案(不使用环境变量),将以下内容添加到我的应用程序中:
但我还不明白为什么node-postgres在一种情况下可以很好地处理环境变量,而在另一种情况下却不行,据我所知,在另一种情况下,一切都是一样的。
这不起作用:
谁有更好的解决方案,允许环境变量?