通过SSH连接本地数据库时报错2003 - Can't connect to MySQL server on 'localhost' (10061)
2003 - Can't connect to MySQL server on 'localhost' (10061) 报错解决方案
你触发的报错截图如下:
该报错本质是MySQL服务未正常响应TCP连接请求,结合SSH隧道连接本地数据库的场景,按以下步骤排查即可解决:
步骤1:确认MySQL服务运行状态
- Windows系统:按下
Win+R输入services.msc打开服务管理器,找到名称为MySQL或带版本后缀的对应服务(如MySQL80),确认服务状态为「正在运行」,未运行则右键点击启动即可。若服务启动失败,可查看MySQL错误日志定位启动故障点。 - Linux/macOS系统:终端执行命令查看服务状态:
服务未运行则执行# Debian/Ubuntu系 sudo systemctl status mysql # CentOS/RHEL系 sudo systemctl status mysqldsudo systemctl start mysql启动服务,需要开机自启可追加enable参数。
步骤2:校验SSH端口转发配置
走SSH隧道连接本地数据库时,需确保本地端口转发规则配置正确,标准的本地端口转发命令格式如下:
ssh -L 本地端口:127.0.0.1:3306 SSH用户名@远程服务器地址
- 确认本地转发端口未被其他程序占用:
- Windows执行命令:
netstat -ano | findstr 3306 - Linux/macOS执行命令:
lsof -i:3306
若3306端口被占用,可更换本地转发端口(如改为3307),连接数据库时对应填写更换后的端口即可。
- Windows执行命令:
步骤3:排查MySQL访问限制配置
- 打开MySQL配置文件(Windows为my.ini,Linux/macOS为my.cnf),查看
bind-address参数,若绑定了特定非本地IP,可修改为127.0.0.1(仅允许本地访问)或0.0.0.0(允许外部地址访问),修改完成后重启MySQL服务生效。 - 确认本地防火墙未拦截3306端口请求,可临时关闭防火墙测试连接,连通后将MySQL端口加入防火墙放行规则即可。
步骤4:校验数据库连接参数
- 连接时优先填写地址为
127.0.0.1而非localhost,避免系统默认走socket连接不匹配SSH转发的TCP端口。 - 确认对应用户已开放
127.0.0.1的访问权限,MySQL内授权命令参考:GRANT ALL PRIVILEGES ON 数据库名.* TO '你的数据库用户名'@'127.0.0.1' IDENTIFIED BY '你的数据库密码'; FLUSH PRIVILEGES;
内容的提问来源于stack exchange,提问作者Problem baby
相关产品推荐
相关产品推荐

