MySQL远程连接需四步全对:①改my.ini中bind-address=0.0.0.0并重启MySQL;②创建'用户'@'192.168.1.%'并授权;③系统防火墙放行3306端口;④修改httpd-xampp.conf放开phpMyAdmin远程访问。

MySQL默认不监听外部连接
XAMPP里的mysqld进程默认只绑定127.0.0.1,连本机其他网卡IP都拒绝响应,更别说局域网设备了。这不是权限问题,是根本没在听——哪怕你开了防火墙、改了用户host,请求压根到不了MySQL。
解决方法只有一个:强制它监听所有IPv4地址。
- 打开
X:\xampp\mysql\bin\my.ini(Windows)或/Applications/XAMPP/xamppfiles/etc/my.cnf(macOS) - 找到
[mysqld]区块,在下面加一行:bind-address = 0.0.0.0 - 删掉或注释掉已有的
bind-address = 127.0.0.1(如果存在) - 保存后重启MySQL服务(仅重启MySQL,不用动Apache)
注意:0.0.0.0不是开放给互联网,只是让MySQL接受本机所有网卡的连接;真实访问控制仍由用户权限和防火墙决定。
MySQL用户host必须匹配局域网IP
即使MySQL在听,root@localhost这种账户也只认127.0.0.1来的连接。局域网设备发来的请求来源IP是192.168.x.x,必须显式授权。
用phpMyAdmin或命令行登录MySQL后执行:
CREATE USER 'dev'@'192.168.1.%' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON *.* TO 'dev'@'192.168.1.%'; FLUSH PRIVILEGES;
关键点:
-
'192.168.1.%'比'%'更安全,限制在常见局域网段内 - 别用
root@'%'——XAMPP默认禁用root远程登录,强行开有风险 - 如果局域网用的是
172.16.x.x或10.x.x.x,把192.168.1换成对应前缀
Windows/macOS防火墙必须放行3306端口
MySQL监听0.0.0.0:3306后,系统防火墙会直接丢弃所有进来的TCP包。Apache的80端口放行了,不代表3306也自动放行。
操作路径:
面向 CRM 系统的 MySQL 8 数据库模式设计。当用户需要为客户关系管理(CRM)系统设计、评审、优化或生成数据库模式时,应使用此项技能。
-
Windows:控制面板 → Windows Defender 防火墙 → 高级设置 → 入站规则 → 新建规则 → 选择「端口」→ TCP → 特定本地端口
3306→ 允许连接 → 勾选「域」「专用」「公用」→ 完成 -
macOS:系统设置 → 网络 → 防火墙 → 防火墙选项 → 点「+」→ 找到
/Applications/XAMPP/xamppfiles/bin/mysqld添加,或手动添加端口3306
验证是否生效:在另一台局域网电脑上运行telnet 192.168.1.100 3306(把IP换成你的主机IP)。如果黑窗一闪没报错,说明端口通了;如果提示“无法连接”,就是防火墙或MySQL没起来。
phpMyAdmin默认禁止远程访问
就算MySQL本身能连,XAMPP自带的phpMyAdmin页面仍会拦截非本地请求,返回403 Forbidden。这不是MySQL配置问题,是httpd-xampp.conf里写的硬限制。
编辑X:\xampp\apache\conf\extra\httpd-xampp.conf(Win)或/Applications/XAMPP/etc/extra/httpd-xampp.conf(macOS),找到两处类似这样的块:
<locationmatch>
Order deny,allow
Deny from all
Allow from 127.0.0.1 ::1
</locationmatch>
改成:
<locationmatch>
Require local
Require ip 192.168.1.0/24
</locationmatch>
注意:
- 这是Apache 2.4+语法,不能混用
Order/Allow老写法,否则Apache启动失败 -
Require ip 192.168.1.0/24表示允许整个C类网段,比逐个写IP靠谱 - 改完必须重启Apache,不是MySQL
真正难调的不是某一步,而是四件事得全对:MySQL bind-address + 用户host + 系统防火墙3306规则 + phpMyAdmin访问白名单。漏一个,就卡在“连不上”但看不出哪出问题。










