fe_sendauth:在 Windows 上使用 pgadmin 中的 passfile 和 docker-compose 时,未提供密码错误?

问题描述 投票:0回答:2

基于这个问题和其他资源,我能够使用

servers.json
配置文件在pgadmin中设置默认服务器连接。

但是当我尝试打开服务器连接时,出现此错误并询问密码:

fe_sendauth:未提供密码

如果没有密码文件,我就不会出现错误(但显然也要求密码)。


在我的 Windows 文件系统上,我有:
../db/servers.json
../db/servers_pass

使用以下通行证文件:

#host:port:db:user:pass
database:5432:*:postgres:mypasswd

我首先尝试使用一个更简单的密码文件,只有

database:5432:postgres:mypasswd:postgres:mypasswd
并且没有换行符,没有评论。我也有同样的错误。

database
是 Postgres 的 docker-compose 映像的名称和主机的名称(servers.json 正在运行,并且与该主机的连接正常,除了密码)。


这些文件被安装在 docker compose 中以

/pgadmin4/

volumes:
    - ../db/servers.json:/pgadmin4/servers.json
    - ../db/servers_pass:/pgadmin4/servers_pass

我可以在 docker 容器中看到它们

-rwxr-xr-x    1 pgadmin  pgadmin        526 Nov 18 10:22 servers.json
-rwxr-xr-x    1 root     root            57 Nov 18 11:06 servers_pass

有点奇怪,他们不是同一个主人。
我还读到其他问题,密码文件的权限需要为 600,但是当文件实际上位于 Windows 文件系统上时,我如何更改它?

docker-compose pgadmin pgadmin-4
2个回答
0
投票

我不确定是否有同样的问题,但是,在服务器模式(与容器一起使用)下,PassFile 路径以存储目录为前缀。

因此,如果您将 PassFile 设置为 /foo/pass,pgadmin 将在

/var/lib/pgadmin/storage/your_user_email/foo/pass

中查找它

我已经创建了一份报告在这里


0
投票

根据文档

.pgpass
文件(注意名称中的点):

  1. 应该位于主目录中(在我的例子中是
    /home/pgadmin
    ;您可以通过 pgadmin 容器中的
    eval echo ~$USER
    命令检查您的目录)。

所以音量看起来像:

- ../db/servers_pass:/home/pgadmin/.pgpass
  1. 正如您正确注意到的那样,应该具有
    0600
    权限。

我在 Ubuntu 中工作,但我所做的是直接在容器中运行

chmod 0600 ~/.pgpass
。由于此文件是一个卷,因此容器的文件权限会覆盖主机上相应卷的文件的权限。

执行这些步骤后,问题消失了。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.