能真正连接mysql的vscode插件是cweijan开发的mysql(蓝底白库图标)或database client;sqltools需额外安装并启用mysql driver,而mysql syntax等仅支持语法高亮、无法连接。

连不上 MySQL,八成是插件装错了——MySQL(作者 cweijan)能直接连,SQLTools 要额外装驱动,MySQL Syntax 这类只高亮、根本不连。
装哪个插件才真正能连 MySQL
VSCode 本身不带数据库连接能力,必须靠插件;但插件功能差异极大,不能只看名字里有没有“MySQL”。
-
MySQL(作者 cweijan,图标是蓝底白库):原生支持 MySQL 5.7~8.4,包括默认的caching_sha2_password认证,无需 Java、无需额外驱动,填完 host/port/user/password/database 就能点“测试连接” -
SQLTools+SQLTools MySQL Driver:平台型方案,适合多数据库共存场景,但必须两个都装、都重启 VS Code,否则日志只报Connection refused,实际是驱动根本没加载 -
Database Client(同作者 cweijan):和上面那个MySQL插件其实是同一套代码,只是打包名不同,功能一致,可任选其一 - 所有带
syntax、highlight、formatter的插件,比如MySQL Syntax,一律卸载——它们不处理连接,只管颜色
host 填 localhost 却连不上?查运行环境
localhost 在不同环境下含义不同,VSCode 进程和 MySQL 实际监听地址不匹配时,就会出现 Connection refused 或 Timed out after 5000 ms。
- Docker:MySQL 在容器里,VSCode 在宿主机,
localhost指向宿主回环,不是容器。改用host.docker.internal(Windows/macOS),或查容器网络网关 IP(Linux) - WSL2:MySQL 跑在 WSL 里,VSCode 在 Windows,
localhost仍指 Windows 回环。执行cat /etc/resolv.conf | grep nameserver,取nameserver后的 IP 填入 host - Mac M1:Rosetta 兼容层下 DNS 解析可能把
localhost解成 IPv6 地址,导致连接失败。直接换127.0.0.1 - 密码含
@、/等字符?必须 URL 编码,例如my@pwd→my%40pwd
连上了却报 “No database selected” 或 “Table doesn't exist”
这不是连不上,是上下文没设对。VSCode 插件不会自动执行 USE mydb,database 字段是显式必需项,不是可选项。
-
database字段必须填具体库名(如myapp_dev),留空会导致所有查询报错,哪怕连接状态栏显示绿色 - 执行
SELECT * FROM users;前,务必确认状态栏右下角显示的是完整连接串,例如mysql://root@127.0.0.1:3306/myapp_dev,缺了最后的库名就是没生效 - 侧边栏右键表名 →
Generate SELECT statement,生成的语句自带库前缀(myapp_dev.users),可避免因库未选中而报错 - 如果连的是 MySQL 8.0+ 且用户用的是
caching_sha2_password,旧版插件会报Client does not support authentication protocol;cweijan 的插件已内置支持,不用手动改认证方式
执行 SQL 后查不到新数据?先看 autocommit
INSERT/UPDATE 成功但 SELECT 查不到,大概率是事务卡在未提交状态,而不是插件或网络问题。
- MySQL 默认开启
autocommit=1,但某些连接参数(如通过connectionString注入)可能关闭它。检查配置里有没有"options": "--init-command=SET autocommit=0"这类字段 - 执行完写操作后,立刻跟一句
SELECT LAST_INSERT_ID();,有返回值说明已写入内存,只是没提交 - 显式加
COMMIT;,或开头先跑SET autocommit = 1;再执行后续语句 - 注意:SQLite 不支持单独
COMMIT,必须包在BEGIN; ... COMMIT;块里
database 字段留空、host 用错环境 IP、密码没编码、autocommit 关闭——这四点覆盖了 90% 的“连得上但用不了”问题。其他细节(如 charset、SSL)插件基本已设妥,默认 utf8mb4,不必手动干预。











