必须选tidb连接类型而非mysql,因navicat 17.1.6+内置专用驱动适配认证与元数据;tidb cloud强制ssl三要素(use ssl、use authentication、verify server certificate)缺一不可;本地部署需设host="0.0.0.0"并映射端口;load_file函数未实现导致视图编辑报错。

Navicat 选了 MySQL 类型而非 TiDB 类型
这是最常见也最容易被忽略的“版本不兼容”假象。Navicat Premium 17.1.6+ 内置了专用 TiDB 连接驱动,它会自动适配 mysql_native_password 认证、元数据结构和部分 SQL 提示;而如果手动选了 MySQL 类型,Navicat 就会启用标准 MySQL 驱动,强行协商 caching_sha2_password 插件——但 TiDB 默认不支持该插件,直接报错:Authentication plugin 'caching_sha2_password' cannot be loaded。
实际不是版本真不兼容,而是协议栈错配。正确路径是:点击 Connection → 在 Vendor Filter 中勾选 PingCAP → 双击列表里的 TiDB(不是 MySQL)。
TiDB Cloud 强制 SSL 但 Navicat 漏设证书验证
TiDB Cloud(Serverless/Dedicated)所有集群均强制启用 SSL 加密传输,且要求客户端验证服务端证书。若只勾选 Use SSL 却没勾选 Verify server certificate against CA,或未填入 CA Certificate 字段的绝对路径(如 C:/certs/ca.pem),Navicat 就会中断连接,并可能显示模糊错误:SSL connection error: unknown error number 或直接提示“连接超时”。
这个错误常被误判为驱动或版本问题,实则是 TLS 握手失败。必须三者同时满足:
- 勾选
Use SSL - 勾选
Use authentication - 勾选
Verify server certificate against CA,且CA Certificate填的是从 TiDB CloudConnect页面下载的ca.pem文件的完整路径
本地部署 TiDB 的监听地址未放开
即使 Navicat 和 TiDB 版本都最新,127.0.0.1:4000 也仅对本机回环有效。若 Navicat 运行在另一台机器(比如 Windows 宿主机连 Docker 里的 TiDB),而 tidb-server 的 config.toml 中仍为默认 host = "127.0.0.1",就会拒绝外部连接,报错看似“连接被拒绝”,实则服务根本没监听外网。
需确认并修改配置:
-
host = "0.0.0.0"(非"127.0.0.1") -
port = 4000(或你指定的端口) - Docker 启动时加
-p 4000:4000映射 - 防火墙放行对应端口
Navicat 编辑视图时报 FUNCTION load_file does not exist
这不是连接阶段的“版本不兼容”,而是功能层的不支持:Navicat 在图形化编辑视图时,内部会调用 load_file() 函数读取定义 SQL,但 TiDB 目前(截至 2026 年中)仍未实现该函数,官方文档明确列为“不支持的函数”。
此时连接本身是成功的,但右键 → “编辑视图”会立刻报错。绕过方式只有两种:
- 改用纯 SQL 方式操作:
SHOW CREATE VIEW view_name;→ 复制 DDL → 手动修改 →CREATE OR REPLACE VIEW ... - 接受该限制,不在 Navicat 中编辑视图,改用其他支持 TiDB 元数据特性的工具(如 VS Code + TiDB 插件)
这个问题不会随 Navicat 升级解决,它卡在 TiDB 自身功能缺口上——只要 load_file 不进主线,Navicat 的视图编辑器就始终无法用于 TiDB。











