4000 的多重身份
4000 同样是多用途端口:Jekyll 静态站点在本地预览时默认用它,NoMachine 远程桌面用它作为主连接端口,TiDB 的 SQL 层也把 MySQL 兼容协议监听在 4000。排障时最要紧的是先确认端口上跑的究竟是哪一个服务,方向错了会浪费大量时间。
基本信息
| 服务 | Jekyll 预览 / NoMachine / TiDB server |
|---|---|
| 协议 | TCP |
| 用途 | 静态站预览、远程桌面、分布式数据库接入 |
| 安全等级 | 按实际服务定 |
典型使用场景
- 写文档或博客时用 Jekyll 本地预览站点效果
- 通过 NoMachine 连接远程主机的图形桌面
- 应用以 MySQL 协议连接 TiDB 的 SQL 层
- 排查连不上数据库,先确认 4000 上是 TiDB 而不是 Web 服务
- 资产梳理时把 4000 按服务类型分别归类
确认 4000 归属
确认 4000 归属
ss -lntp | grep :4000
mysql -h 127.0.0.1 -P 4000 -u root -e "SELECT VERSION();" # TiDB 场景
curl -sI http://127.0.0.1:4000/ | head -3 # HTTP 场景服务判别方法
| 服务 | 响应特征 | 说明 |
|---|---|---|
| Jekyll | HTTP 响应,返回站点页面 | 本地预览,通常只监听本机 |
| NoMachine | 私有协议,需 NoMachine 客户端 | 远程桌面,登录凭据为系统账号 |
| TiDB | MySQL 协议,可被标准驱动连接 | 数据库入口,需账号与网段限制 |
| 判别方法 | 先看监听进程,再试协议 | 避免按错误方向排查 |
TiDB 场景的常见困惑:连接 4000 得到的是数据库认证错误而不是网页内容,说明方向对了。应用侧通常把它当 MySQL 使用,账号密码与库名沿用 MySQL 习惯,但分布式特性上要注意事务模型与自增主键行为的差异。
NoMachine 与 TiDB 都不能直接暴露公网:远程桌面暴露后是暴破与横向移动的入口,数据库端口暴露后是数据泄露的直接通道。对外访问应经跳板机或 VPN 收敛。
端口冲突提示:同一台机器上同时安装远程桌面与本地预览工具时,两者会争抢 4000。启动前先用 ss 查看占用,必要时为其中一个显式指定其他端口,否则服务启动失败却看不出原因。