VSCode MySQL插件连不上数据库主因是本地服务未运行、账号权限不足或连接参数配置错误;需确认mysqld进程、检查user表host字段、正确填写host/port/user/password/database及advanced中的charset与时区参数。

VSCode里装了MySQL插件却连不上数据库?先看这三件事
连不上基本不是插件问题,而是本地没跑 MySQL 服务、账号权限不对,或者插件根本没配对连接参数。官方 MySQL 插件(作者:cweijan)只负责“转发请求”,不自带服务也不建用户。
- 确认
mysqld进程在运行:ps aux | grep mysqld(macOS/Linux)或任务管理器查mysqld.exe(Windows) - 检查账号是否允许本地连接:
SELECT host, user FROM mysql.user WHERE user = 'your_user';,如果host是localhost,但你填的是127.0.0.1,可能因 socket vs TCP 路径差异失败 -
MySQL插件连接时用的是标准 JDBC 风格 URL,但实际只认基础字段:必须填host、port、user、password、database(可空),少一个就报Connection refused或Access denied
配置连接时 port 填 3306 却提示“connection timeout”?可能是防火墙或绑定地址问题
MySQL 默认监听 127.0.0.1:3306,但某些安装(如 Homebrew MySQL 8.0+ 或 Docker 镜像)会默认绑定 127.0.0.1 而非 0.0.0.0,导致 VSCode 插件走 TCP 连接时被拒。
- 查当前绑定地址:
mysql -u root -p -e "SHOW VARIABLES LIKE 'bind_address';",若返回127.0.0.1,说明只接受本机回环,一般没问题;若返回0.0.0.0,则需检查系统防火墙是否放行3306 - Mac 上用
brew services restart mysql后有时会重置配置,建议检查/opt/homebrew/etc/my.cnf或/usr/local/etc/my.cnf里是否有bind-address = 127.0.0.1 - Windows 用户常见坑:MySQL Installer 安装时勾选了“Use Strong Password Encryption”,但插件不支持 caching_sha2_password 认证方式,得进 MySQL 执行:
ALTER USER 'your_user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_pass';
能连上但看不到表、执行 SQL 报错 “No database selected”?注意插件的 database 字段不是可选项
VSCode 的 MySQL 插件不会自动帮你 USE db_name,哪怕你在连接配置里写了 database,它也只是用来初始化上下文——一旦断开重连或切换标签页,就容易丢失当前库上下文。
- 连接配置里的
database字段必须显式填写,不能为空;如果留空,插件会连上去但不指定库,所有SELECT *都报错 - 执行语句前,务必确认左下角状态栏显示了当前连接 + 数据库名,比如
mysql://user@127.0.0.1:3306/myapp,否则右键执行或按Ctrl+Enter会失败 - 建表/删表类 DDL 语句不能带分号结尾,插件解析器会把
;当成分隔符,导致语法错误;但SELECT/INSERT等 DML 可以带(也可不带)
执行结果中文乱码、时间字段格式异常?字符集和时区得靠连接参数硬指定
插件不读取 MySQL 服务端的 character_set_server 或 time_zone,所有编码和时区行为由连接字符串里的参数控制,不设就走默认(通常是 latin1 和系统时区)。
- 在连接配置的
advanced字段里加参数:{"charset":"utf8mb4","timezone":"Asia/Shanghai"},注意是 JSON 格式,不是 URL 查询参数 -
charset必须写utf8mb4,写utf8会退化成 3 字节版本,存 emoji 或某些生僻字会截断 - 如果表本身用的是
utf8mb4_unicode_ci,但连接层用utf8,查询结果可能出现 符号,且LENGTH()和CHAR_LENGTH()返回值不一致
最常被忽略的是:插件不缓存连接状态,每次新开 SQL 标签页都要重新选库;而且它不支持事务块(BEGIN / COMMIT),所有语句都是自动提交。别指望它替代 MySQL Workbench 做复杂运维。











