当前位置: 首页 > news >正文

本地数据库客户端怎么远程连回家里服务器?CloudBeaver + cpolar 搭一个浏览器版数据库工作台

本地数据库客户端怎么远程连回家里服务器?CloudBeaver + cpolar 搭一个浏览器版数据库工作台

人在公司,数据库服务跑在家里的 NAS 或小主机上;临时要看一眼 PostgreSQL、MySQL,手边电脑又没装数据库客户端。这个时候,与其在每台电脑上反复装 DBeaver、配驱动、导连接,不如把数据库客户端本身做成一个 Web 工作台。

这篇用 CloudBeaver 搭一个浏览器版数据库管理入口:CloudBeaver 跑在内网服务器的 Docker 里,本地先通过8978端口验证;需要在外面临时访问时,再用 cpolar 把8978映射成公网 HTTPS 地址。重点依然是“能用,但收得住”,不是把数据库和管理面板长期裸露出去。

和上一篇《没有公网 IP 怎么远程连 PostgreSQL?DBeaver + cpolar 安全连接完整教程》的区别:上一篇是DBeaver 桌面客户端直连 PostgreSQL 的 5432 TCP 端口,更偏向固定电脑上的单库连接;本文是CloudBeaver Web 数据库工作台,浏览器打开后统一管理多种数据库,外网只访问 Web 面板,不直接暴露数据库端口。

1. 这套方案面向哪些场景?

CloudBeaver 可以理解成运行在服务器上的 DBeaver Web 版。数据库连接配置保存在 CloudBeaver 工作台里,用户通过浏览器访问面板,再由 CloudBeaver 去连接内网数据库。

可以优先考虑这些场景:

  • 家里 NAS、小主机、实验服务器上跑了多种数据库,想用浏览器统一查看。
  • 外出时偶尔要查数据、看表结构,不想在临时电脑上安装桌面客户端。
  • 团队内部有一个测试库或开发库,希望用 Web 面板降低接入成本。
  • 不想直接把 PostgreSQL5432、MySQL3306、MongoDB27017这类数据库端口映射到公网。

不建议直接用于这些场景:

  • 高频生产数据库运维,尤其涉及批量写入、DDL、权限变更。
  • 对审计、堡垒机、双因素认证有强合规要求的企业生产环境。
  • 希望把数据库管理入口长期公开给所有人使用。

我的建议是:CloudBeaver 更偏 homelab、测试环境、个人开发环境;如果要进生产,先把身份认证、网络边界、账号权限和审计流程补齐。

2. 访问链路先拆清楚

本文的链路是:

外部浏览器 ↓ cpolar HTTPS 公网地址 ↓ 内网服务器 8978 ↓ CloudBeaver 容器 ↓ 内网数据库 PostgreSQL / MySQL / MariaDB / 其他数据库

这里有一个很重要的边界:cpolar 映射的是 CloudBeaver 的 Web 端口8978,不是数据库端口。

也就是说,公网访问者先进入 CloudBeaver 登录页,再由 CloudBeaver 使用你配置好的数据库账号连接内网数据库。相比直接暴露54323306,这条链路更容易控制,也更适用于临时远程查看。

本文示例只部署 CloudBeaver 本体,不强行绑定某一种数据库。你可以连接已有的 PostgreSQL、MySQL、MariaDB、SQLite、Oracle、SQL Server 等数据库。为了让命令更稳定,数据库连接部分会以“已有内网数据库”为前提说明。

3. 环境准备

准备一台内网机器,可以是 Linux 服务器、NAS、Mac mini、Windows 上的 Docker Desktop。本文命令以 Linux/macOS 终端为例。

需要安装:

  • Docker
  • Docker Compose v2
  • cpolar
  • 一个可访问的内网数据库服务

先检查 Docker:

docker version

检查 Docker Compose:

docker compose version

如果这两条命令都能输出版本信息,就可以继续。

再确认 CloudBeaver 要使用的端口没有被占用:

lsof -i :8978

如果没有输出,说明8978当前空闲。若已有服务占用,可以把后文 Compose 文件里的宿主机端口改成别的端口,例如18978:8978,但 cpolar 映射时也要跟着改成本机的18978

4. 用 Docker Compose 部署 CloudBeaver

先创建一个单独目录:

mkdir -p ~/cloudbeaver-workbench cd ~/cloudbeaver-workbench

写入docker-compose.yml

cat > docker-compose.yml <<'YAML' services: cloudbeaver: image: dbeaver/cloudbeaver:25.0.5 container_name: cloudbeaver restart: unless-stopped ports: - "8978:8978" volumes: - cloudbeaver_workspace:/opt/cloudbeaver/workspace volumes: cloudbeaver_workspace: YAML

这份配置很短,但关键点都在里面:

  • dbeaver/cloudbeaver:25.0.5:CloudBeaver 官方 Docker 镜像。这里固定到具体版本,避免以后latest更新导致教程复现结果变化;实际使用时可以按官方发布记录升级。
  • 8978:8978:宿主机8978端口映射到容器内 Web 服务端口。
  • cloudbeaver_workspace:保存 CloudBeaver 的初始化配置、连接配置和工作区数据。
  • restart: unless-stopped:机器重启后自动恢复,除非你手动停止过容器。

启动服务:

docker compose up -d

查看容器状态:

docker compose ps

正常情况下,会看到cloudbeaver处于runningUp状态。

如果启动失败,先看日志:

docker logs cloudbeaver --tail=100

常见问题通常是端口冲突、Docker 服务没启动,或者镜像拉取网络不稳定。不要急着改 CloudBeaver 配置,先把容器能稳定跑起来。

5. 本地访问并完成初始化

在内网机器或同一局域网电脑上打开:

http://127.0.0.1:8978

如果你是在另一台局域网电脑上访问,把127.0.0.1换成服务器内网 IP,例如:

http://192.168.1.20:8978

第一次打开 CloudBeaver,会进入初始化向导。按页面提示创建管理员账号。这里不要用弱密码,也不要用和数据库相同的密码。

建议管理员账号这样处理:

  • 用户名不要直接用admin这类太容易猜的名字。
  • 密码长度至少 12 位,包含大小写字母、数字和符号。
  • 不要把 CloudBeaver 管理员账号当数据库账号使用。

初始化完成后,先在本地浏览器里登录一次,确认能进入工作台页面。这个步骤是后面远程访问前的分水岭:本地都打不开时,不要先查 cpolar,先查 CloudBeaver 容器和端口。

可以用命令快速验证 HTTP 服务是否响应:

curl -I http://127.0.0.1:8978

只要能看到 HTTP 响应头,例如HTTP/1.1 200302或同类返回,就说明 Web 服务已经在监听。

6. 在 CloudBeaver 里添加数据库连接

进入 CloudBeaver 后,创建一个新的数据库连接。不同版本界面文案会有小差异,但流程大致是:

  1. 点击新建连接。
  2. 选择数据库类型,例如 PostgreSQL、MySQL、MariaDB。
  3. 填写 Host、Port、Database、Username、Password。
  4. 测试连接。
  5. 保存连接。

如果 CloudBeaver 和数据库在同一台 Docker 主机上,Host 不一定能直接写127.0.0.1。原因是127.0.0.1在容器里指向 CloudBeaver 容器自己,而不是宿主机。

常见写法有三种:

数据库位置Host 怎么填
数据库在另一台内网机器填数据库服务器内网 IP,例如192.168.1.30
数据库和 CloudBeaver 在同一个 Docker Compose 网络填数据库 service 名,例如postgresmysql
数据库跑在宿主机上Linux 可填宿主机网卡 IP;Docker Desktop 可尝试host.docker.internal

端口按数据库实际监听端口填写,例如:

  • PostgreSQL:5432
  • MySQL / MariaDB:3306
  • SQL Server:1433

这里建议专门创建一个低权限数据库账号给 CloudBeaver 使用。比如只读查看场景,就不要用数据库管理员账号。上一篇 DBeaver + PostgreSQL 教程里已经演示过只读账号的思路,本文不重复展开 SQL 细节,原则仍然一样:远程入口能查就别给写,能访问一个库就别给全库。

7. 用 cpolar 映射 CloudBeaver 的 8978 端口

CloudBeaver 本地验证通过后,再接入 cpolar。

先确认 cpolar 本地 Web UI 可访问:

curl -I http://127.0.0.1:9200

浏览器打开:

http://127.0.0.1:9200

登录 cpolar 账号后,可以用命令行直接启动 HTTP 隧道:

cpolar http 8978

终端会输出一个公网地址,通常类似:

https://xxxx.cpolar.top

具体域名以你终端实际输出为准。复制这个 HTTPS 地址,用手机流量或外部网络打开,就能访问 CloudBeaver 登录页。

如果你更习惯 Web UI,也可以在http://127.0.0.1:9200里创建隧道:

  • 协议:http
  • 本地地址:8978
  • 域名类型:先用随机域名测试
  • 创建后到“状态 / 在线隧道列表”复制公网 HTTPS 地址

免费随机域名会变化,适用于临时访问和测试。如果你希望长期使用固定入口,再考虑配置固定域名或保留地址。但长期开放前,请先看完后面的安全边界。

8. 外网访问时怎么验证链路

建议按这个顺序验证,不要一上来就改配置:

8.1 本机确认 CloudBeaver 还活着

curl -I http://127.0.0.1:8978

有 HTTP 响应,说明 CloudBeaver 本地服务正常。

8.2 确认容器状态

docker compose ps

如果容器退出,看日志:

docker logs cloudbeaver --tail=100

8.3 确认 cpolar 隧道还在

如果你是用命令行启动的:

cpolar http 8978

这个终端窗口关闭后,临时隧道也会结束。需要继续访问,就重新启动隧道并使用新的公网地址。

8.4 用外部网络打开 HTTPS 地址

最好用手机关闭 Wi-Fi 后访问 cpolar HTTPS 地址。能看到 CloudBeaver 登录页,说明公网到 CloudBeaver 面板这段已经通了。

登录后再测试数据库连接。如果 CloudBeaver 页面能打开,但数据库连接失败,问题通常在 CloudBeaver 到数据库这段内网链路,不在 cpolar。

9. 安全边界:别把数据库工作台当普通网页长期裸露

CloudBeaver 是数据库管理入口,不是博客首页。它能看到表结构、执行 SQL、导出数据,所以安全边界要比普通 Web 应用更克制。

我会按下面这几条处理。

9.1 外网只映射 CloudBeaver,不映射数据库端口

本文没有使用cpolar tcp 5432cpolar tcp 3306,而是映射8978。这样外部访问者面对的是 CloudBeaver 登录页,而不是数据库原生端口。

这不代表绝对安全,但至少把数据库端口从公网扫描面里拿掉了。

9.2 CloudBeaver 账号和数据库账号分开

CloudBeaver 管理员账号负责登录工作台,数据库账号负责连接具体数据库。两套账号不要共用密码。

CloudBeaver Community 版的能力边界也要说清楚:它面向个人和小团队自用的 Web 数据库工作台。如果你需要更细的企业级权限、集中身份认证、审计能力,应按 CloudBeaver 官方版本能力重新评估,不要把本文这套个人远程访问方案直接搬进生产。

数据库账号尽量按用途创建:

  • 查数据:只读账号。
  • 调试开发库:限制在开发库或测试库。
  • 生产库:能不用 CloudBeaver 连就不用;必须连时,走团队的审批、审计和备份流程。

9.3 隧道按需开启,用完关闭

临时访问时,用:

cpolar http 8978

用完按Ctrl + C结束。不要因为“下次方便”就长期挂着数据库管理入口。

如果你已经在 cpolar 后台配置了固定隧道,至少要做到:

  • CloudBeaver 使用强密码。
  • 数据库连接账号低权限。
  • 不在 CloudBeaver 里保存高权限生产库密码。
  • 定期检查连接列表,删除不用的连接。

9.4 不要把 CloudBeaver 当公网多人协作平台

CloudBeaver 支持 Web 化访问,但本文场景是个人或小范围远程维护。多人长期使用时,权限、审计、备份、误操作恢复都要单独设计。

尤其是能执行 SQL 的工具,一次错误的UPDATEDROP不会因为它长在浏览器里就变得温柔。

10. 常见问题

Q1:CloudBeaver 页面能打开,但连接数据库失败怎么办?

先判断数据库是不是 CloudBeaver 容器能访问到。

如果数据库在另一台内网机器,Host 填内网 IP,例如192.168.1.30,不要填你自己电脑上的127.0.0.1

如果数据库在同一个 Compose 文件里,Host 填 service 名。如果数据库跑在宿主机,优先填宿主机内网 IP。Docker Desktop 环境可以尝试host.docker.internal

Q2:为什么不直接用 cpolar 映射 PostgreSQL 5432 或 MySQL 3306?

可以,但适用场景不同。

上一篇 DBeaver + PostgreSQL 文章走的是桌面客户端直连数据库 TCP 端口,偏向你明确只连某一个 PostgreSQL,并且本机有 DBeaver 的情况。本文选择 CloudBeaver,是为了把数据库客户端做成 Web 工作台,外部只打开浏览器,不直接暴露数据库端口。

如果只是偶尔用 DBeaver 连一个库,TCP 隧道更直接;如果要统一管理多种数据库,CloudBeaver 更顺手。

Q3:cpolar 随机地址变了,CloudBeaver 连接会丢吗?

不会影响 CloudBeaver 到数据库的内网连接,但会影响你从外网访问 CloudBeaver 的入口地址。

随机地址用于临时访问更省心。固定入口需要配置固定域名或保留地址,配置前先把 CloudBeaver 和数据库账号权限收紧。

Q4:CloudBeaver 的配置会不会容器删除后丢失?

本文使用了 Docker volume:

volumes: - cloudbeaver_workspace:/opt/cloudbeaver/workspace

只要不删除这个 volume,CloudBeaver 的工作区数据会保留。停止或重建容器不会直接清空配置。

如果要备份,可以先停止容器,再备份 Docker volume。迁移到新机器时,也要把这个工作区数据一起迁过去。

Q5:忘记 CloudBeaver 管理员密码怎么办?

个人测试环境里,最省事的做法通常是备份必要连接信息后重新初始化工作区。生产或多人环境不要这样粗暴处理,应按 CloudBeaver 官方文档的用户管理和恢复流程操作。

为了避免这个问题,初始化后就把管理员账号、恢复方式、数据库连接账号分别记录到密码管理器里。

11. 收尾:浏览器版数据库工作台的价值在“统一入口”

这套方案跑通后,你得到的是一个内网数据库工作台:CloudBeaver 负责统一管理连接,cpolar 负责在需要时给它一个临时公网 HTTPS 入口。

它和 DBeaver 桌面客户端不是替代关系,更像两个不同入口:

  • 固定电脑、单库深度操作:DBeaver 桌面客户端更直接。
  • 多设备浏览器访问、多数据库统一查看:CloudBeaver 更方便。

最后再强调一次边界:不要为了远程方便,把数据库管理入口长期裸露在公网。先本地验证,再临时映射;先低权限账号,再考虑外网访问。数据库远程管理这件事,能打开只是开始,能随时关掉才安心。

标签建议:CloudBeaver、数据库、Docker、cpolar、远程访问

http://www.rkmt.cn/news/1420331.html

相关文章:

  • 数据平权:医疗与社交数据同权保护下的行业变革与挑战
  • 具身智能-三层结构
  • 2026年当下,如何精准联系到专业的激光雷达体积测量系统生产商 - 速递信息
  • 为什么选择Gemma 4 21B-A4B-it REAP?21.34B参数模型的显存优化方案
  • CapRL-Video-4B vs 传统视频模型:10 组关键指标全面评测 [特殊字符]
  • 故障排除手册:解决MiniCPM3-4B-FP16常见部署问题的10个方法
  • G3800,MG3660,MG3640S,ts3380,MG5380,MG5480,MG6280,G5080,TS8380,MG6380报错5B00,P07,E08,1700,5b04废墨垫清零,亲测
  • 2026恩施市本地人必选的公共卫生检测专业机构TOP5推荐!美容院、足疗店、酒店宾馆卫生检测、许可证办理,正规CMA资质检测公司排名推荐 (2026年5月商铺卫生办证最新深度调研方案) - 一修哥咨询
  • ai-medical-model-32bit实战教程:3行代码构建你的私人医疗AI助手
  • Beyond Compare 5终极激活指南:5分钟免费获取永久授权密钥
  • 技术变革下的焦虑应对:构建个人技术演进体系与实战策略
  • UnrealPakViewer:终极Pak文件分析工具,深度解密虚幻引擎资源封装
  • 2026年铜雕塑厂家推荐及景观雕塑生产厂家优点解析 - 栗子测评
  • 如何理解Illustrious XL v0.1架构:Stable Diffusion XL模型原理解析指南 [特殊字符]
  • LC正弦波振荡器设计避坑指南:Multisim仿真中如何平衡起振、幅度与频率稳定度
  • Raw Accel终极指南:7种鼠标加速曲线让你的游戏体验飞升
  • 从DVWA的upload漏洞看PHP文件上传安全:一个后端开发者的防御实战笔记
  • AI专著撰写必备:精选AI工具,快速产出20万字专著书稿!
  • 终极指南:ppf-contact-solver如何引领人工智能与物理模拟融合新趋势
  • 别再手动点开点了!Element Table 展开项记住用户上次操作,数据刷新也不怕
  • 2026年 电缆线租赁/发电机租赁推荐榜:本地应急/临时用电/工地演唱会全覆盖,品质服务与快速响应实力解析 - 企业推荐官【官方】
  • 嘉腾玻璃多少钱? - mypinpai
  • 2026 浙江全日制高复 适配新高考选科提分攻略 - 玖叁鹿
  • Solar Pro Preview 部署实战:本地部署与云端部署的完整教程
  • 河北正翔领衔:2026 年防火涂料权威品牌推荐排行榜 - 玖叁鹿
  • 海口哪里回收黄金正规?本地门店排行 - 合扬奢侈品交易中心
  • 手把手教你用STC15单片机+ST188传感器DIY一个脉搏测量仪(附源码和PCB)
  • 2026年靠谱的大型项目幕墙铝型材厂家排名 - mypinpai
  • 黑客、骇客、白客、红客是同一类人?看完这篇彻底搞懂区别与职责
  • 别再只用AUC了!用Python的DeLong检验,科学比较两个机器学习模型的性能差异