如何使用Postico同时连接本地与Docker容器内的两个PostgreSQL实例
解决Postico同时连接本地与Docker内PostgreSQL实例的配置方案
你之前需要关闭本地PostgreSQL才能连接容器内实例的核心原因是两个实例默认都占用了5432端口,出现了端口冲突,按以下步骤配置即可实现同时访问:
步骤1:调整Docker PostgreSQL的端口映射
建议优先修改Docker容器的端口映射规则,无需改动本地PostgreSQL的默认配置:
- 若你还未启动容器,启动时指定宿主机端口为非5432的端口即可,比如将宿主机5433端口映射到容器内的5432端口,参考启动命令:
docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=自定义密码 postgres:对应版本号 - 若你已经有正在运行的PostgreSQL容器,可先停止并删除原有容器,再用上述命令重新启动即可(注意提前备份容器内的数据库数据)
步骤2:分别配置Postico的两个连接参数
分别在Postico中新建两个连接,参数配置如下:
- 本地PostgreSQL连接:
- 主机地址:
localhost - 端口:
5432 - 填写本地PostgreSQL实例对应的用户名、密码、目标数据库名即可
- 主机地址:
- Docker内PostgreSQL连接:
- 主机地址:
localhost - 端口:
5433 - 填写Docker PostgreSQL实例对应的用户名(默认值为postgres)、启动容器时设置的密码、目标数据库名即可
- 主机地址:
异常排查
如果配置后仍无法连接Docker内的实例,可检查以下两项配置:
- 确认宿主机防火墙未封禁5433端口的本地访问请求
- 确认Docker容器内PostgreSQL的
pg_hba.conf配置允许来自宿主机IP的连接请求,官方默认的PostgreSQL镜像已开放该权限,自定义镜像需要手动配置
内容的提问来源于stack exchange,提问作者Leero11
相关产品推荐
相关产品推荐

