我在谷歌上搜索了这个但没有得到任何线索。
假设用户对 Redis 数据库具有完全的读/写访问权限。我想知道,有没有办法以只读模式连接数据库?
Redis 7 之后更新
REDIS ACL。可用于在数据库上创建只读用户。
具体操作方法如下
首先创建一个具有只读权限的用户
ACL SETUSER readonlyuser on >password ~* +@read
然后连接到指定连接字符串的数据库,以确保您不会连接到具有所有权限的默认用户。
redis-cli -u redis://readonlyuser:password@localhost:6379
现在阅读这样的命令就可以了
GET testkey
KEYS *
但是写命令不会。
SET testkey "somevalue"
我得到的错误是
localhost:6379> SET testkey "somevalue"
(error) NOPERM User readonlyuser has no permissions to run the 'set' command
Redis 在 v5 之前(包括 v5)没有用户权限的概念,因为它不支持用户的概念。就数据库而言,只有一个用户,并且该用户是万能的。
也就是说,由于 v2.6 副本默认配置为拒绝写入,因此实际上使它们成为只读接口(
replica-read-only
配置指令)。
注意:预计在下一个主要版本中,Redis 将提供用户访问列表。