database client在vscode中需精细配置:mysql 8.0+需处理caching_sha2_password兼容性;redis db必须为数字、空密码须显式写"";sql变量与事务须单次执行;ssh隧道配置须嵌套于ssh字段且仅适用于mysql/postgresql。

Database Client 在 VSCode 里不是“装了就能连”,它本质是一个协议层封装工具,不依赖本地 CLI(比如 mysql 或 psql),但对服务端协议细节很敏感。连不上、查不到、变量失效——这些问题基本都出在配置粒度或会话模型上。
MySQL 8.0+ 连接失败:caching_sha2_password 是头号拦路虎
错误信息里只要出现 Client does not support authentication protocol 或 ER_NOT_SUPPORTED_AUTH_MODE,基本就是认证插件不兼容。
- 最直接的修复是改用户认证方式:
ALTER USER 'user'@'host' IDENTIFIED WITH mysql_native_password BY 'password'; - 如果不能动服务端(比如云数据库),可在连接配置 JSON 中显式启用兼容模式:
"authPlugins": {"mysql_native_password": true} - 注意:这个字段必须和
username/password同级,不是嵌套在ssh或ssl下 - 本地 MySQL 若监听
localhost而非127.0.0.1,Database Client会尝试 Unix socket 连接(它不支持),务必把 host 改成127.0.0.1
Redis 连接配错 db 或 password 会导致静默失败
Redis 不报错、不提示、也不显示键列表——常见于 db 值填错或 password 留空没写 ""。
-
db字段必须是数字(如0),字符串"0"会解析失败 - 空密码必须显式写
"password": "",留空或删掉该字段 = 认证拒绝 - 集群或哨兵模式需用
connectionType: "cluster"+nodes数组,不能只填一个 host - 6379 是默认端口,非标端口(比如 6380)必须明确指定,否则连的是本地 6379 —— 即使你本意是连另一台机器
SQL 查询执行后变量/事务丢失:会话隔离是默认行为
Database Client 每次执行都是全新会话,SET @x = 1; 和 SELECT @x; 分两次运行,后者一定报错。
- 想用变量,必须把多条语句合并为一个块再执行(选中全部 →
Ctrl+Enter) - 事务控制同理:
BEGIN; UPDATE ...; COMMIT;必须一次执行完,否则COMMIT会提示 “no transaction in progress” - 大结果集默认只取前 1000 行,修改
databaseclient.maxRows设置可调高,但超过 5 万行容易卡死 UI,建议加LIMIT或用 WHERE 过滤 - 导出 CSV 时字段含换行符或逗号不会自动加引号,导出后打开可能错列;优先导出为 JSON 再转换
SSH 隧道配置写错位置,连接根本不会走隧道
很多人把 SSH 配置写进顶层 JSON,但实际必须放在 ssh 字段下,且只对 MySQL/PostgreSQL 生效(Redis 不支持 SSH 隧道)。
- 正确结构示例:
{ "name": "prod-mysql", "host": "127.0.0.1", "port": 3306, "username": "app", "password": "xxx", "ssh": { "host": "jump.example.com", "port": 22, "username": "jumper", "privateKey": "/Users/me/.ssh/id_rsa" } } -
privateKey路径必须是绝对路径,且私钥文件权限不能太宽松(macOS/Linux 下需chmod 600) - 如果跳板机需要密码而非密钥,插件目前不支持交互式密码输入,得提前用
ssh-agent加载密钥 - SSH 隧道建立后,
host仍填127.0.0.1(因为隧道已把远端端口映射到本地回环)











