navicat 连接 tidb 的本质是将其作为兼容 mysql 协议的数据库使用,但必须选用官方支持的“tidb”专用连接类型(非 mysql),配合正确 host/port、ssl 强制验证及权限配置。
navicat 连接 tidb 的本质,就是把它当做一个兼容 mysql 协议的数据库来用——只要协议对、端口通、认证过,就能连上。但直接填 4000 端口 + mysql 驱动,大概率会失败或功能异常,因为 tidb 官方推荐且 navicat 正式支持的是专用的 tidb 连接类型(不是选 mysql)。
必须选 “TiDB” 连接类型,不能选 “MySQL”
Navicat Premium 17.1.6+ 内置了原生 TiDB 连接驱动,它会自动适配 TiDB 的认证机制(如 mysql_native_password)、元数据查询行为和部分 SQL 语法提示。若强行用 MySQL 类型连接:
- 常见错误:
Authentication plugin 'caching_sha2_password' cannot be loaded(TiDB 默认不启用该插件,但 MySQL 驱动会尝试协商) - 表结构编辑可能报错或丢失字段注释
- 视图/存储过程等对象在左侧导航树中无法正确展开
- SSL 配置项位置不同,容易漏设
正确做法:点击 Connection → 在 Vendor Filter 中勾选 PingCAP → 双击 TiDB,而非 MySQL。
Host 和 Port 填什么,取决于部署形态
4000 确实是 TiDB Server 的默认端口,但它只适用于本地或直连网络通畅的场景。实际填写需分情况:
-
TiDB Cloud Serverless/Dedicated:从控制台
Connect页面获取的HOST和PORT,不是固定4000(Serverless 通常为4000,Dedicated 可能是4000或6000,以控制台为准) -
本地部署 TiDB:若未改配置,填
127.0.0.1和4000即可;但注意tidb-server是否监听了0.0.0.0:4000(检查config.toml中的host和port) -
Docker 启动的 TiDB:确保端口已映射,例如
-p 4000:4000,且容器内tidb-server配置允许外部连接
SSL 配置不是可选项,而是强制路径
TiDB Cloud 所有集群(Serverless/Dedicated)均强制要求 SSL 加密传输,且必须验证服务端证书。Navicat 中必须设置:
- 勾选
Use SSL - 勾选
Use authentication - 勾选
Verify server certificate against CA -
CA Certificate字段填入从 TiDB CloudConnect对话框下载的ca.pem文件绝对路径(Windows 下注意反斜杠转义或用正斜杠)
漏掉任一选项,测试连接时会出现类似 SSL connection error: unknown error number 或直接超时。本地部署 TiDB 若未启用 TLS,则可不勾选 SSL,但生产环境不建议跳过。
用户名格式和权限常被忽略
TiDB 的用户体系与 MySQL 兼容,但有两点关键细节:
- 用户名必须带 host 限定(如
root@%),但 Navicat 的User Name字段只填用户名本体(root),host 由 TiDB 服务端策略控制,无需手动拼接 - 首次连接后,若执行 DDL 报
Access denied,大概率是用户缺少CREATE/ALTER权限,需用root登录后运行:GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'%'; FLUSH PRIVILEGES; - TiDB Cloud 默认用户是
root,密码由控制台生成,不可改;本地部署默认也是root,无密码(首次连接后建议立即设密码)
最易卡住的点:以为填对了所有参数,结果连上却看不见任何数据库——其实是用户没被授权访问任何 schema,得先授予权限再刷新连接。











