在docker环境中configurationtcp md5的Postgres

我正在尝试configurationPostgres以接收使用md5encryption密码的连接。 我阅读了大量的手册,并按照指示,但我没有成功。

我们有几个docker容器,其中一个是使用init_db.sh脚本configuration的Postgres 9容器。 正在运行的容器上的最终configuration是:

listen_addresses = '*' local all all md5 host all all all md5 

运行:lsof -i tcp:5432(我现在在我的Mac上运行),产生了这样的结果:

 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME com.docke 17454 sigals 36u IPv4 0x13ec351b99f025cd 0t0 TCP *:postgresql (LISTEN) com.docke 17454 sigals 37u IPv6 0x13ec351b8ce8a025 0t0 TCP localhost:postgresql (LISTEN) 

当我启动使用encryption密码运行的容器时,出现:ERROR org.apache.tomcat.jdbc.pool.ConnectionPool:182 – 无法创build池的初始连接。

 2017-02-08T14:07:43.438478547Z org.postgresql.util.PSQLException: FATAL: password authentication failed for user "myuser" 

当我把密码作为纯文本的时候就起作用了。

当我只将IPconfiguration到本地主机时,encryption和明文密码都起作用。

我configuration错了什么?

根据文档:

md5要求客户端提供用于validation的双MD5散列密码。 细节见第20.3.2节。

密码要求客户端提供未encryption的密码进行身份validation。 由于密码通过networking以明文forms发送,因此不应在不受信任的networking上使用。 细节见第20.3.2节。

jdbc连接将散列你提供的连接string本身的密码 – 你不必自己md5。

也看看这里: https : //stackoverflow.com/a/39038852/5315974