Docker部署PostgreSQL无法连接DBeaver问题求助
解决Docker PostgreSQL容器与DBeaver的连接问题
问题原因
出现FATAL: No entry in pg_hba.conf for host 192.168.1.15, user user, 'postgres' database, no encryption错误,核心原因有两个:
- PostgreSQL容器默认仅监听本地
localhost,外部主机无法发起连接 pg_hba.conf中未配置允许192.168.1.15主机以当前方式访问postgres数据库和user用户的规则
解决步骤
1. 修改PostgreSQL监听地址
进入容器终端:
docker exec -it posgre_db bash
编辑postgresql.conf文件(路径:/var/lib/postgresql/data/postgresql.conf):
vi /var/lib/postgresql/data/postgresql.conf
找到listen_addresses配置项,修改为:
listen_addresses = '*'
如果找不到该配置,直接在文件末尾添加上述内容即可。
2. 添加pg_hba.conf访问规则
编辑pg_hba.conf文件:
vi /var/lib/postgresql/data/pg_hba.conf
根据场景选择以下规则之一添加:
- 测试环境(允许无加密访问):
host postgres user 192.168.1.15/32 md5
- 生产环境(推荐SSL加密):
hostssl postgres user 192.168.1.15/32 scram-sha-256
若需允许整个192.168.1.x网段访问,将192.168.1.15/32替换为192.168.1.0/24。
3. 重启容器使配置生效
退出容器终端后,执行重启命令:
docker restart posgre_db
4. 调整DBeaver连接配置
- 无加密访问场景:保持主机为
192.168.1.15(或本地localhost/127.0.0.1),端口5432,用户名user,密码password,数据库postgres即可 - SSL加密场景:在DBeaver连接设置的SSL选项卡中,勾选「使用SSL」,按需选择证书验证方式
进阶方案(永久生效)
若不想每次创建容器都重复修改配置,可提前准备自定义的postgresql.conf和pg_hba.conf文件,创建容器时挂载:
docker run --name posgre_db \ -e POSTGRES_USER="user" \ -e POSTGRES_PASSWORD="password" \ -p 5432:5432 \ -v /本地自定义路径/postgresql.conf:/var/lib/postgresql/data/postgresql.conf \ -v /本地自定义路径/pg_hba.conf:/var/lib/postgresql/data/pg_hba.conf \ -d postgres:latest
内容的提问来源于stack exchange,提问作者dia05
相关产品推荐
相关产品推荐

