应填127.0.0.1而非localhost,因Navicat默认走TCP而localhost在Windows/macOS触发命名管道或Unix socket,导致Connection refused;需同时确认MariaDB bind-address允许该地址且监听对应端口。
host 填 localhost 还是 127.0.0.1?
在 windows 或 macos 上用 navicat 连本地 mariadb 时,localhost 会触发命名管道或 unix socket 连接,而 navicat 默认走 tcp;结果常报 connection refused 或直接卡住。这不是密码错,是压根没走到 tcp 协议栈。
解决办法很简单:把 host 改成 127.0.0.1,强制走 TCP。同时确认 MariaDB 的 bind-address 配置允许该地址(如 127.0.0.1 或 0.0.0.0),且服务监听在对应端口(默认 3306)。
验证方式:
- Linux/macOS:运行 sudo netstat -tuln | grep :3306,看到 LISTEN 才算真监听了
- Windows:用 netstat -ano | findstr :3306
远程连接失败报 1130 / 1045 / 1698 错误怎么快速定位?
这类错误不是网络不通,而是权限或认证层被拦下了:
-
ERROR 1130 (HY000): Host 'xxx' is not allowed to connect to this MariaDB server→ 用户账号没授权远程主机,执行GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'pass'; FLUSH PRIVILEGES; -
ERROR 1045 (28000): Access denied for user→ 密码错或用户不存在,先本地试:mysql -u user -p -h 127.0.0.1 -
ERROR 1698 (28000): Access denied for user 'root'@'localhost'→ root 被绑定了unix_socket插件,进 MariaDB 执行:UPDATE mysql.user SET plugin='' WHERE User='root'; FLUSH PRIVILEGES;
caching_sha2_password 报错:“cannot be loaded”
Navicat ≤16.x 不支持 MariaDB 10.4+ 或某些兼容 MySQL 8.0 配置启用的 caching_sha2_password 认证插件。错误信息里明确带这个字符串,基本就是它。
别急着升级 Navicat,优先降级认证方式:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 用 root 登进 MariaDB,执行:
ALTER USER 'your_user'@'%' IDENTIFIED VIA mysql_native_password USING PASSWORD('your_pass'); - 或者新建用户:
CREATE USER 'navi_user'@'%' IDENTIFIED VIA mysql_native_password BY 'pass123'; - 务必跟一句:
FLUSH PRIVILEGES;
注意:mysql_native_password 兼容性最好,但不加密传输密码;若必须保留高安全插件,就只能升到 Navicat 17.0+,并在连接高级设置里手动指定认证插件名。
SSL 设置要不要开?开了怎么配?
内网开发、测试环境,SSL 不是必选项;但只要数据库暴露在公网、或公司策略要求加密链路,就必须开。
Navicat 的 SSL 开关藏在连接属性 → SSH/SSL 页签里。关键分两步:
- 勾选“使用 SSL”,再选“强制 SSL”或“验证 CA”
- 如果选“验证 CA”,得填对服务器端的
ca.pem路径;只选“强制 SSL”则由服务端决定是否提供证书
容易漏的一点:MariaDB 服务端也得配好 SSL 参数(ssl-ca、ssl-cert、ssl-key),否则 Navicat 一连就断,报 SSL connection error。

















