Postgresql 在docker环境中为tcp md5配置Postgres

Postgresql 在docker环境中为tcp md5配置Postgres,postgresql,jdbc,docker,tcp,md5,Postgresql,Jdbc,Docker,Tcp,Md5,我正在尝试将Postgres配置为使用md5加密密码接收连接。我阅读了大量的手册并遵循了说明,但我没有成功 我们有几个docker容器,其中一个是我们正在使用init_db.sh脚本配置的Postgres 9容器。运行容器上的最终配置为: listen_addresses = '*' local all all md5 host all all all md5 运行:lsof-i tcp:5432(我现在在我的Mac上运行),产生了以下结果: COMMAND PID USER

我正在尝试将Postgres配置为使用md5加密密码接收连接。我阅读了大量的手册并遵循了说明,但我没有成功

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

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)
当我使用加密密码启动容器运行时,我得到: 错误org.apache.tomcat.jdbc.pool.ConnectionPool:182-无法创建池的初始连接

2017-02-08T14:07:43.438478547Z org.postgresql.util.PSQLException: FATAL: password authentication failed for user "myuser"
当我以明文形式输入密码时,它就起作用了

当我将IP配置为仅本地主机时,加密密码和明文密码都有效

我配置错了什么?

md5要求客户端为提供双md5哈希密码 认证。详见第20.3.2节

密码要求客户端为提供未加密的密码 认证。因为密码是以明文形式通过 网络,不应在不受信任的网络上使用。见第节 20.3.2了解详情

jdbc连接将散列您在连接字符串中提供的密码-您不必自己md5它

请看这里:

md5要求客户端为提供双md5哈希密码 认证。详见第20.3.2节

密码要求客户端为提供未加密的密码 认证。因为密码是以明文形式通过 网络,不应在不受信任的网络上使用。见第节 20.3.2了解详情

jdbc连接将散列您在连接字符串中提供的密码-您不必自己md5它

请看这里:

你所说的“当我把密码作为明文输入时,它会工作”是什么意思?。。你把密码放在哪里?这是一个使用Hibernate的sprint启动应用程序。密码在application.properties中,在一个名为:spring.datasource.password的属性中。那么你可能会把
hba.conf
中的md5哈希与传递给db进行身份验证的md5哈希混淆起来。@VaoTsun你是什么意思?当你在hba.conf,这并不意味着您应该使用md5而不是密码。抱歉-我没有使用Hibernate的经验。就这句话“当我以明文形式输入密码时,它就工作了。”给了我一个想法,你试图通过使用密码哈希的身份验证你所说的“当我以明文形式输入密码时,它工作了”是什么意思?。。你把密码放在哪里?这是一个使用Hibernate的sprint启动应用程序。密码在application.properties中,在一个名为:spring.datasource.password的属性中。那么你可能会把
hba.conf
中的md5哈希与传递给db进行身份验证的md5哈希混淆起来。@VaoTsun你是什么意思?当你在hba.conf,这并不意味着您应该使用md5而不是密码。抱歉-我没有使用Hibernate的经验。这句话“当我把密码放在明文中时,它就起作用了。”给了我一个想法,你试着用密码的散列来通过身份验证可能是因为英语不是我的第一语言,但对我来说,这意味着Postgres可以获得MD5加密的密码,并将其与加密的原始密码进行比较。此外,当我的配置为:hostall 127.0.0.0/24md5时,我的SpringBoot with Hibernate应用程序即使使用加密密码也能工作。我当然不是怀疑你,我只是困惑让我们这样说吧。您的连接代码中是否有“AuthenticationMD5Password”?如果没有-不要自己散列密码。如果你做了,对不起,你做得对。现在,为什么您可以使用错误的(散列)密码登录,并在hba中托管所有127.0.0.0/24 md5——因为在该行之前,您的连接有
信任
。如果这些看起来合理的话,有什么问题吗?没有,我删除了信任。你能用psql连接数据库吗?。。如果是这样的话,我可以给你一些关于如何检查身份验证的建议,如果没有-对不起-我没有HibernateMay的经验可能是因为英语不是我的第一语言,但对我来说,这意味着Postgres可以获得MD5加密的密码,并将其与加密的原始密码进行比较。此外,当我的配置为:hostall 127.0.0.0/24md5时,我的SpringBoot with Hibernate应用程序即使使用加密密码也能工作。我当然不是怀疑你,我只是困惑让我们这样说吧。您的连接代码中是否有“AuthenticationMD5Password”?如果没有-不要自己散列密码。如果你做了,对不起,你做得对。现在,为什么您可以使用错误的(散列)密码登录,并在hba中托管所有127.0.0.0/24 md5——因为在该行之前,您的连接有
信任
。如果这些看起来合理的话,有什么问题吗?没有,我删除了信任。你能用psql连接数据库吗?。。如果是这样,我可以给你一些关于如何检查身份验证的建议,如果没有-对不起-我没有使用Hibernate的经验