Database Client(cweijan 版)连不上 MySQL 8.0+主因是 mysql2 驱动默认不支持 caching_sha2_password 认证,需改用户认证方式或用 JSON/URI 正确配置连接参数。

Database Client(cweijan 版)是当前 VSCode 里连 MySQL 最省心的扩展,但必须避开 caching_sha2_password 认证坑——否则填对所有参数也连不上。
为什么 Database Client 连不上 MySQL 8.0+?
不是配置错,也不是网络问题,而是它底层用的 mysql2 驱动默认不启用对 caching_sha2_password 的完整支持。VSCode 里点“测试连接”后卡在 Connecting... 或直接报 ER_NOT_SUPPORTED_AUTH_MODE,基本就是这个原因。
PostgreSQL、SQLite、SQL Server 不受影响;MySQL 5.7 及以下默认用 mysql_native_password,一般直连就通。
- 错误信息含
Client does not support authentication protocol→ 确认服务端用户认证方式 - 本地开发可临时改用户:
ALTER USER 'your_user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_pass'; - 线上环境建议新建专用账号,避免影响现有应用逻辑
- 若用 WSL2 连宿主机 MySQL,
host填127.0.0.1,别填localhost(会走 Unix socket,扩展不支持)
连接配置必须显式写端口和协议头
Database Client 不走传统表单,而是解析 JSON 或 URI。MySQL 连接必须带端口(即使 3306),且不能省略协议标识——否则静默失败。
推荐用 JSON 模式(更清晰、易调试):
{
"type": "mysql",
"name": "local-dev",
"host": "127.0.0.1",
"port": 3306,
"database": "test_db",
"user": "vscode_dev",
"password": "your_strong_pass"
}
若用 URI 格式,必须加 mysql:// 前缀,且密码需 URL 编码:mysql://vscode_dev:your%40pass@127.0.0.1:3306/test_db
-
charset实际由插件自动设为utf8mb4,不用手动干预 -
SSL字段保持默认即可,除非对接云数据库(此时建议勾选require) -
Connection timeout默认 10 秒,超时可调高,但别设成 0(会无限等待)
执行 SQL 时变量和事务不共享
Database Client 每次查询都在独立会话中运行,不共享用户变量、不自动开启事务。这不是 bug,是设计使然。
这意味着:
-
SET @var = 1;和SELECT @var;必须写在同一段、一起执行(Ctrl+Enter),否则第二句报错 -
BEGIN; UPDATE ...; COMMIT;三行如果分三次执行,只有前两行生效(COMMIT在新会话里无效) - 大结果集默认只取前 1000 行,如需更多,在设置里改
databaseclient.maxRows,但超过 10 万行容易卡死 UI - 导出 CSV 时字段含换行或逗号不会自动加引号,建议先导出为 JSON 再转换
别把 Database Client 当 DBeaver 用
它适合日常查数据、跑迁移、改字段,但不适合长期维护复杂事务或依赖会话状态的调试场景。结构树刷新很快,DDL 执行后立刻可见;但如果你需要跨会话变量、存储过程调试、或图形化执行计划,还是得切到 mysql CLI 或专业客户端。
真正容易被忽略的点是:它不缓存连接状态——每次右键 Select All Rows 或 Ctrl+Enter 都是全新会话。你以为在同一个上下文里操作,其实不是。











