You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL连接127.0.0.1报错ERROR 2003 (HY000) (111) 如何解决?

MySQL ERROR 2003 (HY000) 111 错误排查与解决方案

错误码111代表连接请求被服务端拒绝,按以下步骤逐一排查:

1. MySQL服务未启动

  • 排查方法:
    • Debian/Ubuntu系统执行命令:systemctl status mysql
    • CentOS/RHEL系统执行命令:systemctl status mysqld
    • Windows系统:打开服务管理器,查找MySQL对应服务的运行状态
  • 解决方案:
    • Debian/Ubuntu启动服务:systemctl start mysql,设置开机自启:systemctl enable mysql
    • CentOS/RHEL启动服务:systemctl start mysqld,设置开机自启:systemctl enable mysqld
    • Windows:右键MySQL服务选择「启动」

2. MySQL未配置监听127.0.0.1地址

  • 排查命令:ss -tulpn | grep mysql,查看MySQL监听的IP地址
  • 解决方案:
    编辑MySQL配置文件(常见路径为/etc/mysql/my.cnf、/etc/my.cnf或Windows安装目录下的my.ini),找到bind-address配置项,修改为:
    bind-address = 127.0.0.1
    # 测试环境可临时设置为0.0.0.0允许所有地址访问,生产环境不建议
    
    修改完成后重启MySQL服务生效

3. MySQL监听端口非默认3306

  • 排查方法:执行上述ss命令查看MySQL监听的端口是否为3306
  • 解决方案:如果为自定义端口(例如3307),连接时指定端口即可:
    mysql -u root -h 127.0.0.1 -P 3307 -p
    

4. 本地防火墙拦截3306端口

  • 排查方法:临时关闭防火墙后重试连接,确认是否为防火墙拦截
  • 解决方案:
    • Debian/Ubuntu(ufw防火墙):ufw allow 3306/tcp
    • CentOS/RHEL(firewalld防火墙):firewall-cmd --add-port=3306/tcp --permanent && firewall-cmd --reload
    • Windows:在防火墙入站规则中添加允许3306端口的规则

5. SELinux拦截(仅CentOS/RHEL系列系统)

  • 排查方法:执行getenforce,如果返回Enforcing则SELinux处于启用状态,临时执行setenforce 0关闭后重试连接
  • 解决方案:确认是SELinux拦截后,执行semanage port -a -t mysqld_port_t -p tcp 3306放行MySQL端口,不建议直接永久关闭SELinux

内容的提问来源于stack exchange,提问作者rudeTool

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 11:06:04