VSCode连接MySQL应选Database Client(cweijan)或SQLTools(mtxr):单库日常开发用Database Client,填host/port/username/password/database即可测试连接;多库共管则选SQLTools+匹配驱动,但需确保驱动启用且版本兼容。

VSCode 本身不带数据库连接能力,必须靠插件;装错插件是连不上的最常见原因——比如装了 MySQL Syntax 这类只做语法高亮的插件,就完全没法建连接。
该装哪个插件:Database Client(cweijan)还是 SQLTools(mtxr)?
取决于你用的数据库数量和使用深度:
- 只连 MySQL(或加个 PostgreSQL/SQLite),日常查数据、改字段、跑 DDL:选
Database Client。它原生打包驱动,填完host/port/username/password/database就能点“测试连接”,不报Client does not support authentication protocol,也不卡在Connecting... - 要同时管 MySQL + PostgreSQL + SQL Server + Oracle,且需要环境变量注入、多连接切换、结果导出 CSV/JSON:选
SQLTools+ 对应驱动(如SQLTools MySQL/MariaDB Driver)。但注意:驱动必须启用,且SQLTools主体插件与驱动版本需匹配,否则日志只显示Connection refused,实际是驱动根本没加载 - 别碰
MySQL Syntax、SQL Formatter、SQLTools MySQL Driver(名字带Driver但作者不是 mtxr)这类插件——它们要么只高亮,要么已废弃,装了反而干扰
填连接参数时 localhost 总连不上?换 IP
Connection refused 或 Timed out after 5000 ms 多半是 host 填错了。VSCode 进程运行在宿主系统,而 MySQL 可能跑在 Docker、WSL2 或 M1 的 Rosetta 层里,localhost 在这些场景下往往解析不到真实监听地址。
- Docker(Windows/macOS):
host改成host.docker.internal,port填容器映射到宿主的端口(如3307),不是容器内3306 - WSL2:
cat /etc/resolv.conf | grep nameserver,取nameserver后的 IP(通常是172.x.x.1),填入host,port填 MySQL 实际监听端口(如3306) - Mac M1 + Rosetta:
host改用127.0.0.1,避免 DNS 解析差异导致的连接失败 - 密码含
@、/等字符:URL 编码,比如my@pwd→my%40pwd
连上了却执行 SQL 报 “No database selected”?
这不是连接失败,是没指定 database 字段。Database Client 和 SQLTools 默认都不自动选库,SELECT * FROM users; 会直接报错 Table 'users' doesn't exist,和命令行里不执行 USE mydb; 是一个道理。
-
Database Client:添加连接时,database字段必须填具体库名(如myapp_dev),留空会导致所有查询失败 -
SQLTools:在 JSON 配置里明确写"database": "myapp_dev";如果用向导创建,最后一步务必确认Database输入框有值 - SSL、charset、timeout 等字段可保持默认:
Database Client自动设charset=utf8mb4,SQLTools也通常无需手动干预
最容易被忽略的是:Database Client 要求 database 必填,而 SQLTools 的 JSON 配置里 database 字段名大小写敏感(必须小写),填成 Database 或 DB 都会静默失效。连得上不代表能查,得盯住这个字段。



















