connection refused 错误主因是数据库服务未运行或未正确配置:先检查本地postgresql(pg_ctl status)、mysql(mysqladmin ping)或docker容器状态;再测端口连通性(telnet/nc);确认vs code插件中host、port、database、密码url编码无误;排查pg_hba.conf、mysql用户host权限及认证插件兼容性;云数据库需启用ssl;多层代理环境须查日志定位请求是否抵达服务端。

Connection refused 错误:检查数据库服务是否真在运行
VS Code 本身不自带数据库服务,所谓“连接失败”绝大多数时候是目标数据库没起来,或者根本没装。别急着调 VS Code 插件,先确认数据库进程在本地或远程机器上真实存在。
- 本地 PostgreSQL:运行
pg_ctl status或sudo systemctl is-active postgresql - 本地 MySQL:运行
mysqladmin ping -u root -p(输密码后看是否返回mysqld is alive) - 用 Docker 跑的:执行
docker ps看容器状态,别只看docker run命令有没有执行过——它可能已退出 - 远程连接失败?先用
telnet host 5432(PostgreSQL)或nc -zv host 3306(MySQL)测端口通不通,比 VS Code 报错更早暴露网络层问题
Extension 配置填错 host/port/user:不是所有插件都默认 localhost:5432
像 ms-vscode.vscode-postgresql 或 bradymholt.pgsql 这类插件,连接配置项看着简单,但几个字段特别容易凭经验瞎填:
-
host:本地 Docker 容器时别填localhost,得填host.docker.internal(macOS/Windows)或宿主机 IP(Linux) -
port:PostgreSQL 默认 5432,MySQL 是 3306,但 Docker 映射可能改成5433或3307,查docker port <container></container> -
database字段填的是库名,不是实例名或服务名;空着或填错会报database "postgres" does not exist(即使你连的是其他库) - 密码含特殊字符(如
@、/)?URL 格式连接串里必须 URL 编码,比如pass@word→pass%40word
Authentication failed:PostgreSQL 的 pg_hba.conf 和 MySQL 的用户权限常被忽略
VS Code 插件报 “Authentication failed” 不代表密码错了,大概率是数据库服务拒绝了这个连接来源。PostgreSQL 尤其严格:
主页面上引用了三个页面也说不过去呀。本次主要是把数据库合并了一下,至于功能,没有加什么新的东西,还是那些:在线订购、帐单查询(添加了一个打印的连接)、特价商品列表、热买商品列表、留言本(许多朋友说以前的那个有问题,现在换成枫叶阁女士留言本,挺不错的)、新闻、完善的管理
- PostgreSQL 查
pg_hba.conf文件,确认有类似这行:host all all 127.0.0.1/32 md5(允许本地 IPv4 密码登录),改完要pg_ctl reload或重启服务 - MySQL 用户创建时没指定 host:用
CREATE USER 'user'@'localhost'创建的用户,无法从 Docker 容器或另一台机器连;想通用就用'user'@'%'(注意权限控制) - MySQL 8+ 默认用
caching_sha2_password插件认证,某些旧版驱动或插件不支持——临时切回mysql_native_password:执行ALTER USER 'user' IDENTIFIED WITH mysql_native_password BY 'pass';
SSL required but not configured:连接 PostgreSQL 时突然卡住或报 no pg_hba.conf entry
不少云数据库(如 AWS RDS、Supabase)强制 SSL,而 VS Code 插件默认不启用。此时不会直接说 “SSL required”,而是报一个看似无关的错误,比如 no pg_hba.conf entry 或直接超时。
- 在插件连接配置中找
ssl或sslmode选项,设为require(PostgreSQL)或true(MySQL) - 如果数据库要求验证证书(如
verify-full),插件不一定支持——这时候老实用psql或mysqlCLI 测试,再决定是否换工具 - 本地开发时,PostgreSQL 启动参数带
-c ssl=on但没配证书?它会静默拒绝所有连接,日志里才写could not load private key file
最麻烦的其实是多层代理场景:Docker + WSL2 + Windows Host + VS Code Remote-WSL —— 每一层网络栈都可能吃掉一个端口或改掉 host 解析。遇到连不通,优先打开数据库日志(log_statement = 'all' + log_connections = on),看请求到底有没有抵达服务端。









