如何将CVAT的Postgres数据库连接到DBeaver并解决连接超时问题
CVAT Postgres数据库连接DBeaver超时解决方法
问题根因
你当前的cvat_db容器配置没有将PostgreSQL默认的5432端口暴露到宿主机,外部的DBeaver工具无法直接访问容器内的数据库服务,因此触发连接超时。
解决方案1:端口映射(推荐)
第一步:修改Docker Compose配置
在你的docker-compose.yml的cvat_db配置段新增端口映射规则,修改后的完整配置如下:
services: cvat_db: container_name: cvat_db image: postgres:10-alpine restart: always # 新增端口映射,将容器5432端口映射到宿主机5432端口 ports: - "5432:5432" environment: POSTGRES_USER: root POSTGRES_DB: cvat POSTGRES_HOST_AUTH_METHOD: trust volumes: cvat_db:/var/lib/postgresql/data networks: - cvat volumes: cvat_db: networks: cvat:
如果宿主机的5432端口已经被其他服务占用,可以改为其他未占用端口,例如"5433:5432",后续DBeaver配置对应修改端口即可。
第二步:重启容器生效配置
在docker-compose.yml所在目录执行以下命令重启服务:
docker-compose up -d
第三步:配置DBeaver连接参数
- 主机地址:填写CVAT部署服务器的IP地址
- 端口:填写你映射的宿主机端口,默认映射为
5432 - 数据库:
cvat - 用户名:
root - 密码:留空即可,你配置了
POSTGRES_HOST_AUTH_METHOD: trust无需密码验证
解决方案2:SSH隧道(无需修改Docker配置,更安全)
如果不想暴露数据库端口到公网,可以通过SSH隧道访问,无需修改原有Docker配置:
- 打开DBeaver的连接配置,切换到「SSH」标签页,勾选「使用SSH隧道」
- 填写CVAT服务器的SSH连接地址、端口、登录账号、密码/密钥
- 切回「主」标签页,主机地址填
127.0.0.1,端口填5432,其余数据库、用户名配置和上文一致即可
连接失败排查
如果修改配置后仍然连接失败,检查以下项:
- CVAT服务器的防火墙/安全组是否开放了你映射的数据库端口的入站规则
- 执行
docker ps确认cvat_db容器正常运行,端口映射状态正常 - 跨公网访问的场景下,确认服务器有公网IP,端口没有被运营商封禁
内容的提问来源于stack exchange,提问作者Utkarsh Umarye
相关产品推荐
相关产品推荐

