postgres pg_basebackup找不到.pg_pass文件

我已经成功地从一个主要到二级postgres泊坞窗容器安装复制stream,每个容器在单独的ec2实例上作为任务运行。
不过,我通过将主服务器上的复制用户作为信任保留在其pg_hba.conf中来实现此目的: host replication replication 0.0.0.0/0 trust

然后,当我切换到MD5,我想我可以简单地设置复制用户的辅助密码,一切都会好起来的。 不。

在我的辅助初始化脚本中,当我调用pg_basebackup -h #{primary_ip} -p 5432 -D $PGDATA -U #{repl_user} -v -P -w --xlog-method=stream我最初得到密码提示。
然后我加了-w 。 这会给我的错误:
pg_basebackup: could not connect to server: fe_sendauth: no password supplied

然后我发现在通用的postgres 9.6映像上没有postgres主目录,所以我添加了一个$ PG_PASSFILEvariables。 这不起作用(权限很好,我甚至把它放在/ tmp中,并通过pg_basebackup行上的PG_PASSFILE = …,正如在这个问题中: .pgpass在Dockerized环境中用于PostgreSQL复制 (参见Raphael的评论) )
不pipe我做什么,pg_basebackup都会忽略.pg_pass文件。

然后,我尝试将卷挂载为/ home / postgres,但是使用AWS,我似乎无法在创build的入口点init脚本中创build根目录。 一切都是作为postgres用户。

有人克服这个吗?
我正在运行我的辅助初始化代码作为入口点脚本。 就像我说的,作为信任工作正常,但添encryption码正在杀死我。

如果你设置复制,你不需要再运行pg_basebackup 。 添加-w将永远给你fe_sendauth: no password supplied如果你设置任何东西,但fe_sendauth: no password supplied trustpeer的本地对应的连接 – 只是因为-w代表--no-password

https://www.postgresql.org/docs/current/static/libpq-envars.html

PGPASSFILE指定用于查找的密码文件的名称。 如果未设置,则默认为〜/ .pgpass(请参阅第32.15节)。

所以默认是.pgpass ,而不是.pg_pass ,当然你可以使用.pg_pass ,设置export PGPASSFILE=.pg_pass ,但是你用PG_PASSFILEvariables – 对吧?

所以postgres忽略它,它应该。

我将首先尝试在600权限下在主目录中创build正确的.pgpass

如果你想使用密码文件,还要介意不同的primary_conninfohttps://www.postgresql.org/docs/current/static/standby-settings.html

在备用服务器上的一个单独的〜/ .pgpass文件中(使用复制作为数据库名称)。 不要在primary_conninfostring中指定数据库名称。