vscode 连不上 mysql 的核心原因是插件选错、参数填错或服务端配置不匹配,最常见报错是 client does not support authentication protocol,因 mysql 8+ 默认认证方式 caching_sha2_password 不被旧插件支持。

连不上 MySQL 不是 VSCode 的问题,是插件选错、参数填错或 MySQL 服务端配置不匹配——最常卡在 Client does not support authentication protocol 这个报错,本质是插件不认 MySQL 8+ 默认的 caching_sha2_password 认证方式。
Database Client(cweijan 版)适合单库日常开发
它原生打包了对 MySQL 5.7~8.4 的完整支持,不用装额外驱动,也不依赖 Java。填完 host、port、username、password 和 database 就能点“测试连接”过。特别适合只连一个 MySQL 实例的场景。
-
host填localhost通常可以,但 Docker 环境必须换为host.docker.internal(macOS/Windows)或宿主机真实 IP(Linux) -
database字段不能空:留空会导致右键表名执行SELECT * FROM users时直接报错Table 'users' doesn't exist - 密码字段必须显式填写,哪怕你设的是空密码——留空会静默失败,无提示
- 不支持 socket 连接,所以 macOS M 系列用户若用 Homebrew 安装 MySQL,别指望
socketPath配置生效
SQLTools + MySQL Driver(mtxr 版)适合多数据库共存
如果你同时要连 PostgreSQL、SQLite 或 SQL Server,SQLTools 是更可持续的选择。但它本身不带任何驱动,必须额外安装 SQLTools MySQL Driver,且作者必须是 mtxr——搜错名字(比如装成 MySQL Connector/NET)会导致连接卡在 Connecting… 后直接失败,日志里只显示 Connection refused,实际是驱动根本没加载。
- 装完驱动后必须重启 VSCode,否则连接面板里看不到 MySQL 类型选项
- 连接配置存在
~/.sqltools/config.json(Linux/macOS)或%USERPROFILE%\.sqltools\config.json(Windows),图形界面只是辅助,最终以该文件为准 - MySQL 8+ 必须显式加
"authPlugin": "mysql_native_password"字段,否则握手失败 -
host建议填127.0.0.1而非localhost:避免某些系统下localhost解析为 IPv6 地址::1,触发监听地址不匹配
连不上先看错误类型,再动手改
三类报错对应三层问题,别一上来就重装插件:
-
Access denied for user 'root'@'localhost':不是密码错,是 MySQL 用户没开远程权限。执行CREATE USER 'vscode'@'%' IDENTIFIED BY '123456'; GRANT ALL ON *.* TO 'vscode'@'%'; FLUSH PRIVILEGES; -
Client does not support authentication protocol:认证插件不兼容。要么改 MySQL 用户:ALTER USER 'vscode'@'%' IDENTIFIED WITH mysql_native_password BY '123456';,要么在连接配置里加authPlugin字段 -
Connection refused:先确认mysqld进程是否运行(systemctl status mysql或任务管理器),再查端口监听状态(netstat -ano | findstr :3306),最后检查防火墙是否放行 3306
连接成功后执行 SQL 却没结果?
SQLTools 不会自动把当前 SQL 文件和连接绑定。即使连接已建好,右下角没显示连接名,所有查询都静默失败。
- 新建一个
query.sql文件,写一行SELECT 1; - 右键编辑器 → 选
SQLTools: Run Current Query(或Ctrl+Shift+P输入该命令) - 首次运行会弹出连接选择框,选中你配好的那个;之后右下角状态栏才出现连接名,表示已激活
- Database Client 没这个问题,只要连接成功,侧边栏点表就能直接右键查数据
真正容易被忽略的是连接激活这一步——很多用户以为“连上了”就万事大吉,结果执行半天没反应,其实只是 VSCode 根本不知道该用哪个连接去跑这句 SQL。











