vscode直连mysql或redis需依赖插件,mysql推荐database client(支持caching_sha2_password)或sqltools+mysql driver,redis推荐vscode-redis或database client;注意权限配置、host填写(docker用host.docker.internal)、连接显式绑定及结果截断问题。

VSCode 本身不支持直连 MySQL 或 Redis,所有“连接”动作都靠插件实现,且每类数据库的底层机制、认证方式、网络要求完全不同——不能用同一套配置逻辑去套用。
MySQL 连不上?先看是不是 caching_sha2_password 认证协议卡住
MySQL 8.0+ 默认启用 caching_sha2_password,但很多老插件(比如已停更的 vscode-mysql)只认 mysql_native_password,一连就报 Client does not support authentication protocol。
- 推荐方案:装
Database Client(作者 cweijan),它原生支持caching_sha2_password,填完host/port/user/password就能过测试连接 - 备选方案:用
SQLTools+SQLTools MySQL Driver(作者 mtxr),装完必须重启 VSCode,否则驱动不加载 - 如果非要降级兼容:在 MySQL 服务端执行
ALTER USER 'dev'@'%' IDENTIFIED WITH mysql_native_password BY 'xxx'; FLUSH PRIVILEGES;
Redis 连不上?大概率是本地没装 redis-cli 或 host 填错
VSCode 的 Redis 插件(如 Redis Explorer)不是独立客户端,它只是调用你系统 PATH 里的 redis-cli 发命令。没装或路径不对,连图标都点不动。
MySQL 9.6.0是面向Linux平台的2026年创新版本,核心架构迎来重大革新。其将外键约束与级联操作从InnoDB引擎层上移至SQL层,确保所有数据变更均被完整记录至Binlog,彻底解决了CDC(变更数据捕获)与主从复制中的数据不一致难题。此外,该版本引入container_aware启动选项以原生适配容器环境,并对审计日志进行了组件化重构,为追求极致数据一致性与云原生体验的开发者提供了全新选择。
- 先在终端运行
redis-cli --version,确认可用;不行就装:macOSbrew install redis,Ubuntusudo apt install redis-tools - Docker 环境下别填
localhost,macOS/Windows 填host.docker.internal,Linux 填宿主机真实 IP - 密码字段不能留空——部分插件会静默跳过认证,导致连上却查不到键;明确填
"password": ""或删掉该字段 - 默认端口是
6379,不是6380或63790;Redis Stack 的 HTTP 端口(8080)不能用于直连
SQL 文件执行没反应?因为没显式绑定连接
VSCode 不自动把 .sql 文件和某个数据库关联。右键“执行”,弹出 No active connection 是最常见误操作。
-
Database Client:打开 SQL 文件后,右上角会出现连接下拉框,必须手动选一个已配置的 MySQL 连接 -
SQLTools:需先按Ctrl+Shift+P→ 输入SQLTools: Connect to Database激活连接,再执行 - 执行粒度很关键:不选中语句就按
Ctrl+Enter,只执行光标所在行;想跑整文件,得右键 →SQLTools: Run Current File - 结果表格里大字段(如
TEXT、JSON)默认截断,右键单元格 →Copy Cell Value才能取全内容
权限、防火墙、IPv6 解析这些底层问题最容易被忽略
插件装对了、配置也填了,还是连不上?八成卡在服务层或网络层。
- MySQL 用户没开远程权限:
CREATE USER 'dev'@'%' IDENTIFIED BY 'xxx'; GRANT ALL ON *.* TO 'dev'@'%'; FLUSH PRIVILEGES; - MySQL 只监听
127.0.0.1,但插件用localhost解析到 IPv6 的::1,直接超时;统一改用127.0.0.1 - 云服务器或 Docker 容器必须放行
3306/6379端口,Linux 还要检查ufw或iptables - Redis 启用了
protected-mode yes且没配bind或requirepass,会拒绝所有外部连接










