需检查三方面:1. bind-address是否设为0.0.0.0或局域网IP并重启服务;2. 用户是否授权远程主机如'192.168.1.%'且刷新权限;3. 防火墙是否放行3306端口,Navicat连接时Host必须填服务器局域网IP而非localhost。
检查 MariaDB 的 bind-address 配置是否允许局域网访问
默认情况下,mariadb 只监听 127.0.0.1,这意味着它拒绝所有来自本机以外的连接请求。navicat 从另一台电脑连不上,十有八九卡在这儿。
- 编辑配置文件:
/etc/mysql/mariadb.conf.d/50-server.cnf(Ubuntu/Debian)或/etc/my.cnf(CentOS/RHEL) - 找到
bind-address行,改成:bind-address = 0.0.0.0(允许所有 IPv4 地址)或指定局域网网段如bind-address = 192.168.1.100 - 改完必须重启服务:
sudo systemctl restart mariadb - 验证是否生效:
sudo ss -tlnp | grep :3306—— 如果看到*:3306或192.168.1.100:3306就对了;如果还是127.0.0.1:3306,说明配置没生效或被其他 conf 覆盖
确认用户账号有远程登录权限(不是 localhost 专用)
MariaDB 的用户是“主机+用户名”联合识别的。root@localhost 和 root@'192.168.1.%' 是两个完全不同的账号,后者才能从局域网其他机器登录。
- 用本地终端登录 MariaDB:
mysql -u root -p - 查现有用户:
SELECT User, Host FROM mysql.user;—— 留意有没有带%、192.168.1.%或具体 IP 的记录 - 如果没有,创建一个可远程登录的账号:
CREATE USER 'naviuser'@'192.168.1.%' IDENTIFIED BY 'your_strong_password'; - 赋予权限(最小够用原则):
GRANT SELECT, INSERT, UPDATE ON your_db.* TO 'naviuser'@'192.168.1.%';(别直接GRANT ALL给生产库) - 刷新权限:
FLUSH PRIVILEGES;
防火墙是否放行了 3306 端口
即使 MariaDB 听了 0.0.0.0,Linux 防火墙(ufw 或 firewalld)也可能把连接挡在系统外。
- Ubuntu/Debian:
sudo ufw status查状态,若启用则加规则:sudo ufw allow 3306 - CentOS/RHEL:
sudo firewall-cmd --list-ports,若无 3306,则:sudo firewall-cmd --permanent --add-port=3306/tcp,再sudo firewall-cmd --reload - Windows 主机跑 MariaDB?记得检查 Windows Defender 防火墙入站规则,放行 TCP 3306
- 路由器或交换机一般不拦内网端口,但某些企业网络启用了二层 ACL,这种情况得找网管确认
Navicat 连接参数填错的典型表现和修正
很多人输对了密码却连不上,其实问题出在 Host 或 Port 上 —— Navicat 默认填的是 localhost,这会让它走本地 socket 而非 TCP,根本到不了 MariaDB 的网络监听层。
- Host 填服务器真实局域网 IP,比如
192.168.1.100,**不要填 localhost 或 127.0.0.1** - Port 确认是
3306(除非你改过port = xxx) - 用户名填的是
naviuser(即@'192.168.1.%'那个),不是root(除非你也给root@'192.168.1.%'授权了) - 如果 MariaDB 开启了 SSL,Navicat 里要勾选 “Use SSL”,否则握手失败;不确定就先关掉 SSL 测试连通性
- 错误信息如
Can't connect to MySQL server on '192.168.1.100' (111)是连接被拒,大概率是 bind-address 或防火墙;Access denied for user则是账号权限或密码问题
真正麻烦的点往往藏在配置叠加里:比如 my.cnf 里写了 bind-address = 0.0.0.0,但 /etc/mysql/conf.d/override.cnf 又把它覆盖回 127.0.0.1,这种时候只看主配置文件会漏掉关键线索。











