Mac M1下XAMPP连接MySQL遇ERROR 2002(HY000)求助
解决Mac M1 + XAMPP 8.2.0-0 MySQL IP连接失败问题
问题分析
使用localhost连接MySQL正常,但通过IP(127.0.0.1、局域网/外部IP)连接时报错ERROR 2002 (HY000): Can't connect to MySQL server on '127.0.0.1' (60),核心原因是MySQL默认仅启用Unix Socket连接,未监听TCP/IP端口,或绑定地址限制了IP访问。
解决方案
1. 修改MySQL配置文件
打开XAMPP的MySQL配置文件,路径为:/Applications/XAMPP/xamppfiles/etc/my.cnf
找到以下配置项并调整:
- 找到
bind-address行,将其值改为0.0.0.0(允许所有IP访问)或127.0.0.1(仅允许本地IP访问)。若该行被注释(开头带#),取消注释后修改。 - 确保
skip-networking行被注释(开头添加#),该配置会直接禁用TCP/IP连接。
修改完成后保存文件。
2. 重启MySQL服务
通过XAMPP控制面板重启MySQL,或执行命令行:
sudo /Applications/XAMPP/xamppfiles/bin/mysql.server restart
3. 验证TCP监听状态
执行以下命令检查MySQL是否在监听3306端口:
lsof -i :3306
或
netstat -an | grep 3306
输出中需包含0.0.0.0:3306或127.0.0.1:3306的条目,说明TCP监听已正常启用。
4. 检查用户访问权限
确保连接用户(如root)拥有对应IP的访问权限:
- 先用localhost连接MySQL:
cd /Applications/XAMPP/xamppfiles/bin ./mysql -h localhost -u root
- 执行权限授权命令(按需选择):
- 允许从任意IP访问:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码' WITH GRANT OPTION; FLUSH PRIVILEGES;
- 仅允许从本地127.0.0.1访问:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY '你的密码' WITH GRANT OPTION; FLUSH PRIVILEGES;
补充说明
localhost连接正常是因为Mac系统默认优先使用Unix Socket(路径通常为/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock),无需依赖TCP/IP端口;而IP连接强制走TCP/IP协议,必须依赖MySQL的TCP监听配置。
内容的提问来源于stack exchange,提问作者asyadi
相关产品推荐
相关产品推荐

