vscode本身不支持直连mysql,必须安装cweijan开发的mysql插件(非sqltools或语法高亮类);配置时host勿填localhost(docker/wsl2/m1需用对应ip)、database字段必填、密码含特殊字符需url编码,且配完须手动右键connect激活连接。

VSCode 本身不执行 SQL,必须靠插件;装错插件或配错参数,90% 的“连不上”“执行无反应”问题就出在这儿。
装 MySQL 插件别选错:认准 MySQL by cweijan
很多用户搜“database”“sql”装了一堆名字像的插件,结果发现点不了连接、右键没菜单、执行按钮灰掉——MySQL Syntax 只高亮,Database Client 默认走 JDBC(要本地装 Java)、vscode-database 对 MySQL 8.4+ 认证协议支持差。
- 唯一推荐:
MySQL(作者 cweijan,图标是蓝底白字 MySQL 字样),原生支持 5.7~8.4,包括caching_sha2_password,无需额外驱动或 Java 环境 - 卸载所有含
syntax、highlight、formatter的插件,它们不处理连接 - 别碰
SQLTools:它需要额外装SQLTools MySQL/MariaDB Driver,且配置走 JSON 文件,新手容易卡在No driver found或connections.json格式错误上
填 host 和 port 时 localhost 常常连不通
VSCode 进程运行在宿主系统,而 MySQL 实际可能跑在 Docker 容器、WSL2 或 M1 的 Rosetta 层里——这时 localhost 解析失败,报 Connection refused 或 Timed out after 5000 ms。
- Docker(Win/macOS):host 改用
host.docker.internal,port 填容器映射到宿主的端口(如3307),不是容器内3306 - WSL2:在 WSL 终端执行
cat /etc/resolv.conf | grep nameserver,取nameserver后的 IP 填入 host,port 填 MySQL 实际监听端口(如3306) - Mac M1 + Rosetta:尝试把
localhost换成127.0.0.1,绕过 DNS 解析差异 - 密码含
@、/等字符?URL 编码一下,比如my@pwd→my%40pwd
执行 SELECT 报 “No database selected” 不是连不上,是没指定库
成功连上 ≠ 自动选中某个 schema。MySQL by cweijan 默认不设 database 字段,所以 SELECT * FROM users; 会直接报错,和命令行里不先 USE mydb; 一个道理。
- 创建连接时,
Database字段必须明确填入库名(如myapp_dev),不能为空 - 想临时换库?右键已连接节点 →
Change Database,选目标库;否则新查询仍发往默认库(或无库) - 建表语句带库前缀(如
CREATE TABLE myapp_dev.users)可绕过当前库限制,但不推荐长期依赖
执行 SQL 前必须手动 Connect,不是配完就自动连
插件不会在你填完参数后自动连接,也不会记住上次状态。重启 VSCode、切换工作区后,连接图标仍是灰色圆圈——此时执行任何 SQL 都会提示 No active connection found,而不是超时或认证失败。
- 务必右键连接项 →
Connect,看到状态栏数据库图标变绿、侧边栏连接名旁出现绿色圆点才算活的 - 验证是否真连上了:右键任意表 →
Select Top 100 Rows,比手写SELECT *更快,也避开大表卡死 UI - 执行快捷键是
Cmd+Enter(macOS)或Ctrl+Enter(Win/Linux),光标在语句内即可触发,不用全选
最容易被忽略的是:连接配置正确 ≠ 连接已激活,以及 database 字段为空导致所有查询都失败——这两点没有报错提示,只给模糊的“no database selected”或“no active connection”,得靠经验快速定位。











