目前redis由于6.0+的版本增加了账号密码登录的方式也就是ALC的控制规则,在这之前是仅需要账号密码登录的,这个时候我们要研究如何实现这个目标
以下是我实现的过程:
我的需求目标: 在Docker 中启动 Redis 7.2 容器并设置账号为 root
、密码为 root123456
、监听宿主机端口 6382
官方镜像:redis:7.2
镜像 + 自定义 ACL 配置文件** ------ 通过挂载 redis.conf
,创建自定义用户名 root
(推荐)
-
在宿主机上新建一个配置文件
/path/to/redis.conf
,内容示例:conf# 开启密码认证 requirepass root123456 # 创建并启用用户 root,允许所有命令、所有 key user root on >root123456 ~* +@all # 禁用 default 用户(可选) user default off
-
启动容器并挂载此配置:
bashdocker run -d \ --name redis-7-2 \ -p 6382:6379 \ -v /path/to/redis.conf:/usr/local/etc/redis/redis.conf \ redis:7.2 \ redis-server /usr/local/etc/redis/redis.conf
-
-v .../redis.conf:/usr/local/etc/redis/redis.conf
:挂载自定义配置文件citeturn1search3 -
redis-server /usr/local/etc/redis/redis.conf
:指定使用挂载的配置启动 Redisciteturn1search3 -
认证方式:
AUTH root root123456
或者使用-u root
:bashredis-cli -h 127.0.0.1 -p 6382 -u root -a root123456
另一种方式: redis-stack-server:7.2
镜像:环境变量直接创建 root
用户
bash
docker run -d \
--name redis-stack-7-2 \
-p 6382:6379 \
-e REDIS_USERNAME=root \
-e REDIS_PASSWORD=root123456 \
redis/redis-stack-server:7.2
-
--name redis-stack-7-2
:容器名称示例 -
-e REDIS_USERNAME
/-e REDIS_PASSWORD
:直接在镜像层面创建 ACL 用户及密码citeturn0search2 -
启动后使用:
bashredis-cli -h 127.0.0.1 -p 6382 -u root -a root123456
说明 :官方
redis:7.2
镜像不支持REDIS_USERNAME
,需使用redis-stack-server
镜像才能通过环境变量新增自定义 ACL 用户。