connection refused本质是数据库服务未运行,而非vscode插件问题;需先用mysqladmin ping或pg_ctl status确认服务状态,再检查docker容器、host/port配置及mysql 8.0+的caching_sha2_password兼容性。

Connection refused 本质是服务没起来,不是插件问题
VSCode 报 Connection refused,90% 情况下数据库进程根本没在运行。插件只是个“拨号器”,它不提供数据库服务本身。
- 本地 MySQL:运行
mysqladmin ping -u root -p,输密码后看到mysqld is alive才算真活 - 本地 PostgreSQL:用
pg_ctl status或sudo systemctl is-active postgresql确认状态 - Docker 用户:别只看
docker run命令,执行docker ps看容器是否仍在Up状态;已退出的容器不会响应任何连接 - Windows 用户注意:MySQL 服务名可能不是
mysql,而是mysql80或带版本号的,查任务管理器里的服务列表
Host 和 port 填错导致静默失败
很多插件(比如 Database Client)对字段校验极松——填空、填错、多填冒号,都不报红,但连接就是卡住或直接失败。
-
host字段只填地址,不要带端口:localhost:3306是错的,必须拆成host: "localhost"+port: 3306 - 本地 Docker 容器:Windows/macOS 填
host.docker.internal;Linux 填宿主机真实 IP(如192.168.1.100),不能填localhost -
port必须是非空数字,不能是字符串"3306",也不能留空——即使 MySQL 默认 3306,也得显式写 -
database字段区分大小写,且必须是已创建的库名;填错或为空时,右键“Select All Rows”会直接报Table 'xxx' doesn't exist,而非连接错误
MySQL 8.0+ 认证插件不兼容最常被忽略
连 MySQL 8.0+ 报 Access denied 或卡在 Connecting…,大概率不是密码错,而是认证方式不匹配。
- 进 MySQL 执行:
SELECT user, host, plugin FROM mysql.user WHERE user = 'your_user';,如果plugin是caching_sha2_password,就坐实了问题 - 别直接
ALTER USER改生产账号;开发机可新建专用账号:CREATE USER 'vscode_dev'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY 'pass123'; - Host 必须填
127.0.0.1,别用localhost——后者走 Unix socket,多数插件不支持 - 连接串格式优先于表单:推荐直接用 URI 格式
mysql://vscode_dev:pass123@127.0.0.1:3306/my_db,避免字段拼接歧义
SQLTools 驱动未加载等于没装
SQLTools 主体扩展装了,不代表能连 MySQL——它依赖独立的驱动插件,且不自动启用。
- 必须额外安装
SQLTools MySQL/MariaDB Driver(名字必须完全匹配,不是 “MySQL Connector/NET” 或其他) - 装完必须重启 VSCode,否则日志里只会显示
Connection refused,实际根本没触发驱动初始化 - 图形界面填的参数常常不生效;需手动编辑配置文件,在
~/.sqltools/config.json(macOS/Linux)或%USERPROFILE%\.sqltools\config.json(Windows)中加:"authPlugin": "mysql_native_password" - 路径大小写敏感:Linux/macOS 下
packages/driver.mysql/错写成driver.Mysql就会导致MissingModuleError
plugin 字段、Docker 的网络模式、或者 SQLTools 配置文件里那个被忽略的 authPlugin 键。改完记得重启,而不是点重连。











