轻量数据库桌面客户端火了:本地连 MySQL/Redis,外出怎么用 cpolar 安全访问?
轻量数据库桌面客户端火了:本地连 MySQL/Redis,外出怎么用 cpolar 安全访问?
最近轻量数据库桌面客户端又被开发者翻出来讨论,原因很简单:现在大家手里不止一个 MySQL,也不止一个 Redis。项目本地一套、测试环境一套、临时 Demo 一套,真靠命令行来回切,时间全花在找连接信息上了。
我更推荐的做法是:本地用 Docker 起一套干净的 MySQL 和 Redis,再用桌面客户端统一管理。人在办公室时走局域网,人在外面临时要查测试数据,就用 cpolar 开短时隧道访问,不把数据库长期裸露到公网。
1 什么是轻量数据库桌面客户端?
这里说的轻量数据库桌面客户端,指的是安装在电脑上的数据库管理工具。它把连接、表结构、查询窗口、Redis Key 浏览、SQL 执行结果放在一个界面里,比每次手写命令更省心。
HelloGitHub 热门仓库里,跨平台数据库桌面客户端排到前列,支持 MySQL、PostgreSQL、SQLite、Redis、MongoDB 等多种数据源。这个热度不意外,开发者需要的是一个打开就能连、连上就能查的工作台。
划重点:本文只建议连接本地测试库、演示库、只读排查库,不建议把生产数据库端口直接映射到公网。
2 环境准备:先把本地 MySQL 和 Redis 跑起来
为了让步骤可复现,这里用 Docker 启动 MySQL 8 和 Redis 7。这样不会污染本机环境,删除容器后也更容易重新来过。
如果你的电脑还没装 Docker Desktop,先到 Docker 官网安装桌面版。安装好后打开终端,执行下面命令确认 Docker 可用:
docker version能看到 Client 和 Server 信息,说明 Docker 已经正常启动。这里别跳过检查,很多连接失败其实不是数据库问题,而是 Docker Desktop 还没跑起来。
2.1 创建一个单独网络
先创建网络,后面 MySQL 和 Redis 都放在这个网络里,排查时更清楚。
docker network create db-lab-net如果提示网络已存在,说明你之前创建过同名网络,可以继续往下做。
2.2 启动 MySQL 8
下面命令会启动一个 MySQL 8 容器,本机通过127.0.0.1:3306访问。示例密码为了教程演示写成固定值,自己长期使用时请换成更强的密码。
docker run -d \ --name mysql-lab \ --network db-lab-net \ -e MYSQL_ROOT_PASSWORD='Mysql_123456' \ -e MYSQL_DATABASE=demo_db \ -p 3306:3306 \ mysql:8.0等十几秒后检查状态:
docker ps --filter name=mysql-lab docker exec -it mysql-lab mysql -uroot -pMysql_123456 -e "SHOW DATABASES;"如果报Access denied,先检查密码是不是完整复制;如果报连接不上,先看docker ps里容器是否还在运行。
2.3 启动 Redis 7
Redis 也用容器跑,端口映射到本机6379。这里加了访问密码,避免任何人拿到端口后直接连进去。
docker run -d \ --name redis-lab \ --network db-lab-net \ -p 6379:6379 \ redis:7-alpine \ redis-server --requirepass 'Redis_123456' docker exec -it redis-lab redis-cli -a Redis_123456 PING返回PONG就对了。这里不要为了省事去掉 Redis 密码,后面讲远程访问时,密码是最基本的一道门。
图里需要看到两个容器都处于运行状态,端口分别映射到3306和6379。如果只看到一个容器,先回到上面的启动命令补齐。
3 用桌面客户端连接 MySQL 和 Redis
桌面客户端的品牌很多,连接参数都差不多。本文不绑定具体产品界面,避免不同版本菜单名称不一致;你只要找到“新建连接”或“添加数据源”入口,按下面参数填就能连。
3.1 添加 MySQL 连接
新建 MySQL 连接时,填写这些信息:
- Host:
127.0.0.1 - Port:
3306 - User:
root - Password:
Mysql_123456 - Database:
demo_db
保存前点一次测试连接。看到连接成功后,再打开查询窗口执行:
CREATE TABLE IF NOT EXISTS notes ( id INT PRIMARY KEY AUTO_INCREMENT, title VARCHAR(100) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); INSERT INTO notes (title) VALUES ('hello mysql client'); SELECT * FROM notes;这一步不是为了造数据,而是确认“客户端 → 本机端口 → Docker 容器 → MySQL”这条链路完整打通。查询结果里能看到hello mysql client,说明桌面客户端连接没问题。
3.2 添加 Redis 连接
Redis 连接参数更少:Host 填127.0.0.1,Port 填6379,Password 填Redis_123456。
连接成功后,新建一个 Key 测试:
docker exec -it redis-lab redis-cli -a Redis_123456 SET demo:client "hello redis client" docker exec -it redis-lab redis-cli -a Redis_123456 GET demo:client客户端里刷新 Key 列表,能看到demo:client。如果客户端显示空列表,先确认选择的是默认 DB 0,再检查密码有没有填错。
图里建议同时展示 MySQL 查询结果和 Redis Key。读者看到这里,就能判断本地数据库和客户端已经接上。
4 外出访问前,先把安全边界说清楚
很多人一想到外出访问数据库,第一反应是把3306、6379映射出去。这个做法很危险,尤其是数据库里有真实业务数据时。
更稳的方式是按场景拆开:自己临时查测试库,开短时 TCP 隧道,用完关闭;给同事演示管理页面,只映射 Web 管理入口;长期固定访问,使用固定地址、强密码、最小权限账号和访问控制。
本文演示的是“自己外出临时访问本机测试库”。数据是本地测试数据,账号是演示账号,隧道只在需要时打开。如果你只是自己在局域网里用,后面的 cpolar 步骤可以先跳过。
5 安装并登录 cpolar
cpolar 在这里负责把本机端口临时映射成外部可访问地址。它不是数据库客户端,也不替你管理权限;它只解决“人在外面,访问不到家里或办公室电脑端口”的问题。
macOS 可以用 Homebrew 安装:
brew tap probezy/core && brew install cpolar sudo cpolar service install sudo cpolar service start cpolar version curl -s http://127.0.0.1:9200 || echo "服务未启动"Linux 可以用官方一键脚本安装:
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash cpolar version安装后打开本机控制台:
http://127.0.0.1:9200能打开页面后登录账号。图形界面正常登录时,cpolar 会完成账号绑定;纯命令行环境也可以手动绑定:
cpolar authtoken <你的 authtoken>这里别把authtoken写进公开仓库,也别截图发到群里。它相当于你的隧道账号凭据。
6 用 cpolar 临时访问 MySQL 和 Redis
数据库属于 TCP 服务,所以这里用 TCP 隧道。命令行临时启动最直观,适合短时演示和排查。
6.1 临时开放 MySQL 测试库
在本机执行:
cpolar tcp 3306终端会输出一个公网 TCP 地址和端口。把它填到桌面客户端的新连接里:Host 填 cpolar 输出的 TCP 主机名,Port 填 cpolar 输出的公网端口,账号密码仍用前面的 MySQL 信息。
连接前再提醒一次:这里只适合临时测试库。生产库请使用独立只读账号、强密码、访问控制,并把真实业务库和演示库分开。
6.2 临时开放 Redis 测试库
Redis 同理,执行:
cpolar tcp 6379在桌面客户端里新增 Redis 连接,Host 和 Port 填 cpolar 输出的公网地址,密码填Redis_123456。连接成功后读取demo:client,能看到前面写入的值。
如果外部连接失败,按这个顺序查:本机容器是否还在运行、本机客户端连127.0.0.1是否正常、cpolar 控制台里隧道是否在线、外部客户端的 Host 和 Port 是否填成 cpolar 输出值。
图里需要看到 TCP 隧道在线,并且桌面客户端已经通过外部地址连上测试库。看不到在线隧道时,不要继续改数据库配置,先回到 cpolar 控制台确认隧道状态。
7 固定地址和权限怎么选
免费服务版本生成的是随机临时公网地址,24 小时内会变化,适合临时调试、短时演示、外出应急。这个特性反而适合本文场景:用的时候打开,不用就关掉。
如果你经常在外面访问同一台机器,就不要每次改客户端连接参数。cpolar 的固定二级子域名需要基础服务版本或以上,固定 TCP 地址需要专业服务版本或以上。数据库这类 TCP 服务要固定公网地址,就看固定 TCP 地址能力。
但固定不等于安全。MySQL 不要长期使用root远程连接,Redis 必须设置密码,演示库和真实库分开,隧道用完就关闭。
可以给 MySQL 创建一个只读账号,专门用于外出查看:
docker exec -it mysql-lab mysql -uroot -pMysql_123456 -e "CREATE USER IF NOT EXISTS 'readonly'@'%' IDENTIFIED BY 'Readonly_123456'; GRANT SELECT ON demo_db.* TO 'readonly'@'%'; FLUSH PRIVILEGES;"后续外部连接就用readonly,不要继续拿root到处连。这里看起来多一步,实际能少很多风险。
8 总结
到这里,我们已经把本地 MySQL 和 Redis 跑起来了,也用桌面客户端完成了本机连接测试。外出访问部分没有把数据库长期暴露出去,而是用 cpolar 按需创建 TCP 隧道,满足临时查看、远程联调、同事验收这类真实场景。
- 本地开发阶段:Docker 起 MySQL/Redis,桌面客户端连
127.0.0.1 - 外出应急阶段:cpolar 临时开 TCP 隧道,客户端填公网主机和端口
- 安全控制阶段:测试库隔离、强密码、只读账号、用完关闭隧道
轻量数据库桌面客户端真正省心的地方,不是“替你省掉数据库知识”,而是把常用连接和查询动作整理到一个地方。再配合 cpolar 这种按需远程接入方式,本地测试环境就能在办公室、家里、外出路上保持同一套使用习惯。
