赞
踩
postgresql: image: postgres:14.2 container_name: postgres ports: - 5432:5432 volumes: - ./volumes/postgresql/:/var/lib/postgresql/data/ - /etc/localtime:/etc/localtime environment: - POSTGRES_USER=postgres - POSTGRES_PASSWORD=xxxxxxx - POSTGRES_HOST_AUTH_METHOD=md5 - TZ=Asia/Shanghai networks: - signal-network restart: always
/var/lib/postgresql/data/
)映射到物理机上,保证容器关闭删除异常损坏等情况时数据不丢失,但这样会造成一些性能损耗知道存在弱密码漏洞时,我首先想到的是PostgreSQL的配置问题,因为默认就是不进行密码校验的
查看了配置文件pg_hba.conf
,果然是默认配置,不做密码校验
如果按照正常情况下,PostgreSQL容器初始化时,会创建数据目录,按照配置创建用户名和密码
由于我们的数据目录文件夹非空,已经存在数据库,就会跳过初始化过程,就不会重新创建数据目录,也就没有设置密码
回忆起这份数据目录的来源,应该是在项目初期,还没有设置数据库密码时生成的
问题很明确了,一开始PostgreSQL的docker配置没设置密码,默认生成的文件目录也就没有密码。后面设置了密码,因为数据目录非空没有执行创建过程,导致密码设置没生效
此时有两种解决方式,一是修改已有的文件卷,增加密码校验;二是保持文件目录空,使用sql初始化库表和数据
pg_hba.conf
,增加密码校验Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。