Navicat连不上XAMPP的MariaDB根本原因是MariaDB默认仅监听127.0.0.1,需注释my.cnf中bind-address=127.0.0.1、禁用skip-networking、重启服务、放行3306端口防火墙,并创建带远程权限的专用用户。

为什么Navicat连不上XAMPP的MariaDB?
根本原因不是密码错、端口错,而是MariaDB默认只监听127.0.0.1——它压根不接收局域网来的TCP连接。哪怕你填对了IP和端口,请求根本到不了数据库进程,直接被拒绝。
改my.cnf让MariaDB监听所有网卡
必须注释掉bind-address=127.0.0.1,否则任何远程连接都会失败。这个配置在XAMPP里默认开启,是安全设计,但开发调试时得主动放开。
- Windows/macOS/Linux路径统一为:
/opt/lampp/etc/my.cnf(Linux)或/Applications/XAMPP/etc/my.cnf(macOS)或X:\xampp\mysql\bin\my.ini(Windows,注意是.ini不是.cnf) - 找到
bind-address行,加#注释掉;如果不存在,就手动添加一行:# bind-address = 127.0.0.1 - 确认没有启用
skip-networking——如果有,同样注释掉 - 保存后必须重启MariaDB:
sudo /opt/lampp/lampp restartmysql(Linux/macOS)或点XAMPP控制面板重启MySQL
防火墙放行3306端口,不是“关掉”就行
Windows Defender或macOS防火墙会静默拦截3306入站请求,表现为Navicat提示“Connection refused”或超时。只关防火墙测试可以验证问题,但不能作为解决方案。
XAMPP 8.0.30 是一款免费、开源的跨平台 Web 服务器集成包,专为快速搭建本地 PHP 开发环境而设计。该版本核心组件包括:Apache 2.4.56、MySQL 8.0.33、PHP 8.0.30、phpMyAdmin 5.2.1 等。它支持 Windows、Linux 和 macOS 系统,可让开发者在个人电脑上轻松模拟服务器环境,无需复杂配置即可运行 WordPress、Thin
- Windows:控制面板 → Windows Defender 防火墙 → 允许应用通过防火墙 → 勾选
Apache HTTP Server;若没出现,点「允许其他应用」→ 手动添加X:\xampp\mysql\bin\mysqld.exe - macOS:系统设置 → 网络 → 防火墙 → 防火墙选项 → 勾选
mysqld;若无,点「+」添加/Applications/XAMPP/xamppfiles/bin/mysqld - CentOS 7:运行
sudo firewall-cmd --add-port=3306/tcp --permanent再sudo firewall-cmd --reload
创建带远程权限的用户,别硬改root
root用户默认只允许localhost登录,直接改它的host为%有风险,且XAMPP某些版本会覆盖你的修改。更稳妥的做法是新建专用账户。
- 先用phpMyAdmin或命令行登录MariaDB(用本地root)
- 执行:
CREATE USER 'devuser'@'192.168.1.%' IDENTIFIED BY 'your_strong_password';(用192.168.1.%比%更安全) - 再授权:
GRANT ALL PRIVILEGES ON *.* TO 'devuser'@'192.168.1.%'; FLUSH PRIVILEGES; - Navicat连接时,Host填开发机局域网IP(如
192.168.1.100),User填devuser,Password填刚设的密码
最容易被忽略的是:改完my.cnf后没重启MySQL服务,或者防火墙规则没生效(尤其Windows下要勾选“专用网络”而非仅“公用网络”)。这两步漏掉任意一个,配置全白做。










