vscode连接mysql必须依赖扩展,推荐sqltools+mysql/mariadb driver(适配mysql 8+ caching_sha2_password认证)或database client(cweijan版,轻量单库适用);需正确配置host、port、authplugin、charset等参数,否则易因权限、认证协议或网络问题连接失败。

VSCode 本身不支持直连 MySQL,必须靠扩展;但只要选对插件、填对参数、绕开认证坑,5 分钟内就能在编辑器里查表、写 SQL、看结果。
用 Database Client 还是 SQLTools?
Database Client(cweijan 开发)更轻量,界面简洁,适合单数据库日常开发;SQLTools(mtxr 开发)模块化强,多数据库共存时更稳,但需额外装驱动。MySQL 8.0+ 用户优先选 SQLTools + MySQL/MariaDB Driver,因为旧版插件默认不兼容 caching_sha2_password 认证方式。
- Database Client 对中文表名/字段名的自动补全支持弱,写
SELECT * FROM 用户表时不会提示列名 - SQLTools 的连接配置走 VSCode 设置同步,换设备重装后能直接恢复连接
- 如果只连本地 MySQL 且版本 ≤ 5.7,Database Client 装完就能用,不用改服务端配置
连接失败常见报错和对应解法
最常卡在三类错误:Access denied for user、Client does not support authentication protocol、Connection refused。它们分别指向权限、认证插件、网络层问题。
-
Access denied:不是密码错了,大概率是 MySQL 没开远程访问权限。执行CREATE USER 'vscode'@'%' IDENTIFIED BY '123456'; GRANT ALL ON *.* TO 'vscode'@'%'; FLUSH PRIVILEGES; -
Client does not support authentication protocol:MySQL 8.0 默认用caching_sha2_password,而部分插件只认mysql_native_password。登录 MySQL 后执行ALTER USER 'vscode'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; -
Connection refused:检查netstat -an | grep 3306(macOS/Linux)或netstat -ano | findstr :3306(Windows),确认 mysqld 进程在监听,且防火墙放行了 3306 端口
连接配置里哪些字段不能空、哪些能省略
VSCode 扩展读取的是 JSON 格式的连接定义,字段语义和 MySQL 命令行客户端一致,但部分字段留空会导致连接逻辑异常。
-
host必填,填localhost和127.0.0.1效果不同:前者走 socket 文件(Linux/macOS),后者走 TCP;若 MySQL 配置禁用了 socket,必须用127.0.0.1 -
port可省略,但显式写上3306更稳妥,尤其当你本地跑着多个 MySQL 实例时 -
database可空,为空时连接成功后只能看到库列表,不能直接展开表;填了才能右键Select All Rows -
authPlugin在 SQLTools 中必须显式设为mysql_native_password,否则即使用户已改认证方式,插件仍可能 fallback 到旧协议
执行 SQL 后结果乱码或字段名显示为问号
这不是 VSCode 或插件的问题,而是 MySQL 服务端字符集没对齐。VSCode 编辑器默认 UTF-8,但 MySQL 的 character_set_client、character_set_connection、character_set_results 若仍是 latin1,查询结果就会变形。
- 临时修复:连接后立即执行
SET NAMES utf8mb4;,再运行你的 SELECT - 永久修复:修改 MySQL 配置文件(
my.cnf或my.ini),在[client]和[mysqld]下都加上default-character-set = utf8mb4,然后重启 mysqld - 验证是否生效:执行
SHOW VARIABLES LIKE 'character_set%';,确保 client/connection/results 全是utf8mb4
认证方式、字符集、host 解析路径——这三个点不手动确认,光靠“填完点测试”大概率连不上。尤其是团队协作时,别人能连,你连不上,90% 是这三处之一没对齐。











