Navicat连不上Docker Redis主因是网络配置与Redis安全限制未调优:需注释bind、禁用protected-mode、保持daemonize no、正确挂载配置并映射端口,宿主机防火墙及云安全组须放行6379,连接时填宿主机IP和映射端口并核对密码。
navicat 连不上 docker 里的 redis,八成是网络没通、配置没开、端口没映射对——不是 navicat 的问题,是容器暴露方式和 redis 自身限制共同导致的。
Redis 容器必须显式开放外网访问权限
默认启动的 redis 容器只监听 127.0.0.1,且开启 protected-mode yes,这会让所有非本地连接直接被拒绝。即使你用 -p 6379:6379 映射了端口,请求进得来,Redis 自己也会拦住。
- 必须注释或删除配置中的
bind 127.0.0.1(包括 IPv6 的::1) - 必须设置
protected-mode no,否则只要没指定bind,它就自动启用保护模式 -
daemonize no要保持为no—— Docker 容器里不能用守护进程模式,否则容器一启动就退出 - 如果设了密码,
requirepass必须写在配置文件里,命令行传参(如--requirepass xxx)在挂载配置文件时会失效
Docker 启动时 -p 参数必须正确映射且不与 host 网络冲突
用 --net=host 模式虽然省事,但会绕过 -p 映射,且无法限制端口、无法多实例共存,还可能和宿主机服务冲突。生产环境更推荐 bridge 模式 + 显式端口映射。
MiniMax 图片理解 + 网络搜索 MCP 工具。适配 Docker 环境(极空间等),支持图片 OCR 识别、图像内容理解、网络搜索。API Key 安全存储在本地 credentials 文件,不暴露在代码中。
- 正确写法:
docker run -d -p 6379:6379 --name myredis -v /path/to/redis.conf:/etc/redis/redis.conf redis:7-alpine redis-server /etc/redis/redis.conf - 错误写法:
docker run --net=host ...+-p 6379:6379→ Docker 会警告Published ports are discarded,端口实际未按预期暴露 - 宿主机防火墙(如
ufw或iptables)必须放行6379端口,云服务器还要额外在安全组里开 - 如果 Redis 配置了
bind 0.0.0.0却仍连不上,大概率是protected-mode还开着,别信配置文件里“看着像开了”
Navicat 连接时填错 IP 或忽略密码会导致“Connection refused”或“NOAUTH”
Navicat 报错 Connection refused 不等于端口没开,也可能是 Redis 拒绝了连接;报 NOAUTH 则说明密码没填或填错,但连接本身是通的。
- “Host” 填的是宿主机 IP(不是
localhost,也不是容器内网 IP),比如192.168.1.100或云服务器公网 IP - “Port” 填的是宿主机上被映射的端口(即
-p左边那个),不是容器内端口 - “Password” 必须和配置文件中
requirepass的值完全一致,注意大小写和空格;密码含!、$、(等 shell 特殊字符时,建议改用简单密码先验证通路 - Navicat for Redis 默认使用
redis://协议,不支持 TLS;若 Redis 启用了tls-port,需单独配置且 Navicat 版本得 ≥16.1
最常被忽略的一点:改完 redis.conf 并重启容器后,用 docker exec -it myredis redis-cli 进去执行 CONFIG GET bind 和 CONFIG GET protected-mode,亲眼确认生效。别只信自己“改过了”。

















