Redis哨兵模式新建用户和修改口令
新建用户
⚠️ 不管是通过
ACL SETUSER命令直接在主节点创建的用户、还是通过修改主节点ACLFILE添加的用户,都不会同步到从节点。
通过写入ACLFILE创建(推荐)
查看主节点IP地址:
bash
docker exec -it infra_redis_1 redis-cli -h 127.0.0.1 -p 26379 sentinel masters
#或者
docker exec -it infra_redis_1 redis-cli -p 6379 --user root -a xxxxxx info replication
查看ACL文件位置:
bash
cat /opt/sre/redis/config/redis.conf | grep aclfile
cat /opt/sre/redis/config/users.acl
在主节点ACL文件中添加一个全局读写用户:
bash
user riskuser on >Abc123_bbc allkeys allchannels +@all -@admin -@dangerous +config|get +info +keys
在主节点ACL文件中添加一个全局只读用户:
bash
user riskuser on >Abc123_bbc allkeys allchannels +@read +config|get +info
重新加载ACL文件(acl load):
bash
#正常加载返回OK
docker exec -it infra_redis_1 redis-cli -p 6379 --user root -a xxxxxx acl load
连接验证:
bash
docker exec -it infra_redis_1 redis-cli -p 6379 --user riskuser -a Abc123_bbc info replication
#或者
docker exec -it infra_redis_1 redis-cli -u redis://riskuser:Abc123_bbc@127.0.0.1:6379
通过ACL命令直接创建
查看主节点IP地址:
bash
docker exec -it infra_redis_1 redis-cli -h 127.0.0.1 -p 26379 sentinel masters
#或者
docker exec -it infra_redis_1 redis-cli -p 6379 --user root -a xxxxxx info replication
直接通过ACL SETUSER命令创建用户:
bash
docker exec -it infra_redis_1 redis-cli -p 6379 --user root -a xxxxxx
127.0.0.1:6379> ACL SETUSER appuser on >Abc123_ssd allkeys allchannels +@read +config|get +info
OK
127.0.0.1:6379> ACL SAVE
OK
127.0.0.1:6379> quit
连接验证:
bash
docker exec -it infra_redis_1 redis-cli -p 6379 --user appuser -a Abc123_ssd info replication
#或者
docker exec -it infra_redis_1 redis-cli -u redis://appuser:Abc123_ssd@127.0.0.1:6379
⚠️ 不管是通过
ACL SETUSER命令直接在主节点创建的用户、还是通过修改主节点ACLFILE添加的用户,都不会同步到从节点。
以上在主节点创建用户的操作需要在所有从节点都手动再执行一次。
修改用户密码
Redis支持为同一个用户配置多个密码。
查看ACLFILE中配置的用户清单:
bash
docker exec -it infra_redis_1 redis-cli -p 6379 --user root -a xxxxxx
127.0.0.1:6379> ACL LIST
为指定用户添加一个新密码(旧密码不失效):
bash
docker exec -it infra_redis_1 redis-cli -p 6379 --user root -a xxxxxx
127.0.0.1:6379> ACL SETUSER appuser >Abc123_bbc
OK
127.0.0.1:6379> acl save
OK
127.0.0.1:6379> quit
为指定用户添加一个新密码(旧密码失效):
bash
docker exec -it infra_redis_1 redis-cli -p 6379 --user root -a xxxxxx
127.0.0.1:6379> ACL SETUSER appuser resetpass >Abc123_bbc
OK
127.0.0.1:6379> acl save
OK
127.0.0.1:6379> quit
⚠️
resetpass表示让指定用户的所有旧密码都失效。
修改用户权限
查看主节点IP地址:
bash
docker exec -it infra_redis_1 redis-cli -h 127.0.0.1 -p 26379 sentinel masters
#或者
docker exec -it infra_redis_1 redis-cli -p 6379 --user root -a xxxxxx info replication
检查henry用户的权限清单:
bash
[root@localhost ~]# docker exec -it infra_redis_1 redis-cli -p 6379 --user root -a xxxxxx
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> acl list
127.0.0.1:6379>
127.0.0.1:6379> acl getuser henry
1) "flags"
2) 1) "on"
2) "sanitize-payload"
3) "passwords"
4) 1) "xxxxxxxxxxxxxxxxxxxxxxxxxx"
5) "commands"
6) "+@all -@admin -@dangerous +config|get +info +keys"
7) "keys"
8) "~*"
9) "channels"
10) "&*"
11) "selectors"
12) (empty array)
为henry用户添加权限(加号表示添加权限):
bash
127.0.0.1:6379> ACL SETUSER henry +restore +client|list +slowlog|get +latency|doctor +role +lastsave
OK
127.0.0.1:6379> ACL SAVE
OK
127.0.0.1:6379> acl getuser henry
1) "flags"
2) 1) "on"
2) "sanitize-payload"
3) "passwords"
4) 1) "xxxxxxxxxxxxxxxxxxxxxxxxxx"
5) "commands"
6) "+@all -@admin -@dangerous +config|get +info +keys +restore +client|list +slowlog|get +latency|doctor +role +lastsave"
7) "keys"
8) "~*"
9) "channels"
10) "&*"
11) "selectors"
12) (empty array)