NA-Vlet 内网穿透

远程连接家里的 MySQL / Redis:用 Navicat 从外网直连数据库

远程访问更新于 2026-09 · 约 8 分钟阅读

场景很常见:数据库在家里服务器/办公室内网(自建 MySQL、跑在 NAS 上的 PostgreSQL、开发机的 Redis), 人在外面想用 Navicat / DataGrip / DBeaver 直接连上去查数据、导报表。数据库是 TCP 服务, 内网穿透映射对应端口即可获得公网入口——但数据库比 Web 服务更不能裸奔, 这篇把打通步骤和安全加固一起讲清楚。

常见数据库端口速查

数据库 默认端口 协议
MySQL / MariaDB 3306 TCP
PostgreSQL 5432 TCP
Redis 6379 TCP
MongoDB 27017 TCP
SQL Server 1433 TCP

第一步:让数据库接受非本机连接

默认配置大多只听本机回环,先在数据库侧放开(但仍只放开到局域网,公网交给穿透管):

验证:在跑客户端的设备上 telnet 数据库内网IP 3306 通了再进入下一步。

第二步:创建 TCP 映射

  1. 在与数据库同内网的常开设备上安装 NA-Vlet(免费下载)并登录;
  2. 「隧道映射」→ 新建:协议选 TCP,选「数据库」模板,内网目标填 192.168.1.20:3306(数据库实际地址端口);
  3. 保存后拿到公网地址与端口(形如 公网IP:39xxx);
  4. 建议立刻配置安全组白名单:只放行你办公/常用的出口 IP,把互联网上无休止的扫描器挡掉。

第三步:客户端连接

# Navicat / DataGrip / DBeaver 填写
主机: 映射的公网IP
端口: 映射的公网端口(不是 3306)
用户/密码: 数据库账户
# 测试连接通过即完成

# 命令行同理
mysql -h 公网IP -P 映射端口 -u dev -p
redis-cli -h 公网IP -p 映射端口 -a '口令'

想要更体面的访问方式,给映射绑定自有域名,以后连接串就是 db.你的域名:端口, 换服务器/换端口也不用到处改客户端配置。

数据库暴露公网的安全清单(重要)

数据库端口是自动化攻击的第一目标:全网扫描器 24 小时爆破 3306/6379。穿透打通 ≠ 可以裸奔,以下按优先级执行:

  1. IP 白名单(最有效):NA-Vlet 安全组规则只放行你的固定出口 IP;家庭宽带 IP 会变的话,平时停用映射、用时再开;
  2. 最小权限账户:远程只用业务库的受限账户,禁用 root/超级用户远程登录(MySQL root 限 localhost);
  3. 强密码 + 非默认端口意义有限:强密码必须有;改端口只能挡最浅的扫描,白名单才是硬门槛;
  4. Redis 一定设密码并考虑 rename-command FLUSHALL;历史上大量 Redis 被写入 crontab 挖矿就是无密码裸奔;
  5. 隧道 TLS 加密:NA-Vlet 隧道默认 TLS,数据库明文协议(MySQL 手shake、Redis 全明文)在公网段也拿不到内容;
  6. 限速:防止误操作(比如全表导出)把你家上行吃满,也降低被恶意拖库的速度;
  7. 用完即关:临时查数就临时开映射,长期入口只保留确有需求的。

开发者常见用法