Connection refused最常见根因是MySQL服务未运行:DBeaver尝试连接时,mysqld进程根本未启动,需先通过systemctl status mysql(Linux/macOS)或net start | findstr MySQL(Windows)确认服务状态并启动。

MySQL服务根本没在运行
这是Connection refused最常见也最容易被忽略的根因:DBeaver想拨号,但电话局(mysqld进程)压根没开机。很多人装了MySQL Workbench或DBeaver,误以为“数据库工具装好了=数据库服务跑起来了”,其实完全不是一回事。
验证方式很简单:
- Windows:运行
net start | findstr MySQL,没输出就说明服务没启动;再试sc query mysql看状态是否为 RUNNING - macOS/Linux:运行
sudo systemctl status mysql或brew services list | grep mysql(如果用Homebrew安装)
若服务未运行,直接启动即可:net start mysql(Win)或 sudo systemctl start mysql(Linux)。注意:如果提示“服务名无效”,说明你只装了客户端(如mysql.exe),没装服务端(mysqld.exe),需重装MySQL Installer并勾选MySQL Server组件。
3306端口没被mysqld监听
服务起来了,不代表它在监听你填的那个地址和端口。MySQL默认只监听127.0.0.1,且配置文件中bind-address设为127.0.0.1或localhost时,外部连接(包括DBeaver本地连接)可能失败——尤其当你在DBeaver里填的是localhost而非127.0.0.1,某些系统会走IPv6回环导致不匹配。
检查监听状态:
- Windows:
netstat -ano | findstr :3306,确认输出中有LISTENING且PID对应mysqld进程 - Linux/macOS:
ss -tlnp | grep :3306或lsof -i :3306
如果没看到监听,打开MySQL配置文件(my.ini或my.cnf),确认以下两项:
-
port=3306(别被注释掉) -
bind-address=127.0.0.1(不要写成localhost,也不要留空或设为0.0.0.0除非真需要远程访问)
改完重启MySQL服务,再查端口。
DBeaver驱动配置错用旧版类名
报错里带com.mysql.cj.jdbc.Driver找不到,不等于驱动jar包缺失,更可能是版本错配或类名未生效。MySQL 8.0+必须用mysql-connector-java 8.0.23+,而DBeaver 23.0+默认尝试加载新驱动类,但如果你手动改过驱动属性里的driver class字段,或者之前导入过老版驱动(com.mysql.jdbc.Driver),就会冲突。
操作建议:
- 进
Database → Driver Manager → MySQL,点右上角Edit,确保Class Name是com.mysql.cj.jdbc.Driver - 检查
Libraries页签:删掉所有mysql-connector-java-5.x.jar,只保留一个mysql-connector-java-8.0.xx.jar - 连接配置页的
Driver properties里,至少加这两项:allowPublicKeyRetrieval=true、useSSL=false(开发环境够用;生产请配SSL)
改完别忘了点OK保存驱动,再新建连接测试——旧连接不会自动继承新驱动设置。
防火墙/杀软拦截了3306端口
即使服务在跑、端口在监听,Windows Defender 防火墙或第三方杀毒软件仍可能把mysqld.exe当成“未知网络程序”静默拦截。现象是:命令行mysql -h127.0.0.1 -P3306 -uroot -p能连上,但DBeaver连不上——因为DBeaver走的是Java进程,而mysql客户端是原生exe,防火墙规则对它们是分开管的。
临时验证方法:
- 关掉Windows防火墙(仅测试用):
netsh advfirewall set allprofiles state off - 若此时DBeaver连上了,说明就是防火墙问题
永久解决:进Windows Defender 防火墙 → 允许应用通过防火墙,找到java.exe(DBeaver运行所用JRE路径下的那个)或mysqld.exe,勾选“专用”和“公用”网络。
Mac用户注意:pfctl或Little Snitch也可能拦截,可先停用测试;Linux用户若启用了ufw,运行sudo ufw allow 3306。
真正卡住人的地方,往往不是“该不该开服务”,而是“开了服务但没监听对的地址”,或者“驱动看着有,实际加载的是旧版本类”。每次连不上,先用mysql -h127.0.0.1 -P3306 -uroot -p跑通最小闭环,再比对DBeaver的host/port/驱动类名——跳过这步,后面全在盲调。


















