Redis 默认绑定 127.0.0.1 且启用保护模式,导致局域网无法连接;需修改 bind 为 0.0.0.0、关闭 protected-mode、检查密码/ACL、放行 6379 端口、确保 Navicat 版本支持 RESP3。
Redis 默认绑定 127.0.0.1,局域网根本连不上
navicat 连 redis 失败,十有八九是 redis 启动时只监听本地回环地址。它默认配置 bind 127.0.0.1,意味着只接受本机发来的连接请求,其他局域网设备(比如你另一台电脑上的 navicat)发包过来,直接被系统丢弃。
实操建议:
- 打开 Redis 配置文件(通常是
/etc/redis/redis.conf或 Windows 下的redis.windows.conf) - 找到
bind行,改成bind 0.0.0.0(允许所有 IPv4 地址接入) - 确认
protected-mode设为no(否则即使 bind 改了,Redis 仍会拒绝非本地连接) - 重启 Redis:
sudo systemctl restart redis(Linux)或重启服务(Windows)
没设密码或密码不对,Navicat 连上也立刻断开
Redis 默认不启用密码认证,但一旦你启用了 requirepass,Navicat 就必须填对——而且要注意:密码不是在“用户名”栏填,是在“Password”字段单独输;填错、多空格、大小写不一致都会报 NOAUTH Authentication required 或直接连接超时。
实操建议:
- 检查配置里是否有
requirepass your_password,并确认值和 Navicat 中填写的一致 - 如果用的是 Redis 6+ 且启用了 ACL(比如
ACL LOAD),要确保用户有on、allcommands、allkeys权限,仅靠requirepass不够 - 临时测试可先注释掉
requirepass行,看能否连通,排除网络外的干扰
防火墙拦住了 6379 端口,连通性测试都过不了
改完 bind 和密码,Navicat 还是连不上?大概率是服务器防火墙没放行 6379。Linux 的 ufw、firewalld,Windows 自带防火墙,甚至云服务器的安全组,都会默认屏蔽非白名单端口。
实操建议:
- 在 Redis 服务器上执行
telnet 127.0.0.1 6379,确认本地能通(排除 Redis 没启或端口错) - 从 Navicat 所在机器执行
telnet your_redis_ip 6379,不通就说明被中间某层拦截 - Linux 上放行:
sudo ufw allow 6379或sudo firewall-cmd --add-port=6379/tcp --permanent - 云服务器务必检查控制台里的安全组规则,添加入方向 TCP:6379
Navicat 版本太老,不支持 Redis 7 的 RESP3 协议
Redis 7 默认启用 RESP3 协议,而 Navicat 15 及更早版本只认 RESP2。连接时可能无提示失败,或报 Protocol error、Invalid response 类似错误,日志里看不到明确原因。
实操建议:
- 升级 Navicat 到 16.1.8 或更高(官方 2023 年后版本才完整支持 RESP3)
- 不想升级?可在 Redis 配置中强制降级:
proto-max-bulk-len 512mb+tcp-keepalive 300不够,得加redis-cli --raw -h your_ip -p 6379 CONFIG SET "resp3" "no"(需先连上) - 更稳妥的做法:启动 Redis 时加参数
--enable-resp3 no(仅调试用,不推荐长期开启)
真正卡住人的地方,往往不是 bind 或密码,而是三层拦截叠在一起:配置改了但没 reload、防火墙开了但安全组忘了、Navicat 显示“连接成功”其实只是建了 TCP 连接,还没过认证或协议握手。建议每改一项,就用 redis-cli -h ip -p 6379 -a password ping 逐层验证。










