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系统执行命令:
- 解决方案:
- Debian/Ubuntu启动服务:
systemctl start mysql,设置开机自启:systemctl enable mysql - CentOS/RHEL启动服务:
systemctl start mysqld,设置开机自启:systemctl enable mysqld - Windows:右键MySQL服务选择「启动」
- Debian/Ubuntu启动服务:
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配置项,修改为:
修改完成后重启MySQL服务生效bind-address = 127.0.0.1 # 测试环境可临时设置为0.0.0.0允许所有地址访问,生产环境不建议
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端口的规则
- Debian/Ubuntu(ufw防火墙):
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
相关产品推荐
相关产品推荐

