redis禁用keys、flushdb、flushall等命令
文档
官方文档
下载地址
说明
- 版本选择:
redis-7.0.0.tar.gz - 下载地址:https://download.redis.io/releases/redis-7.0.0.tar.gz
redis禁用keys、flushdb、flushall等命令
安装redis
- 以单机版redis为例,安装redis参考文档:redis单机安装
keys、flushdb、flushall等命令的危害
keys *会扫描所有key,如果有较多的key,可能会发生阻塞flushdb会删除当前数据库中的所有keyflushall会删除所有数据库中的所有key
keys命令的替代方案
-
keys *命令是获取所有key,可以用scan命令分批获取key,减少单次阻塞时间 -
scan命令,https://redis.io/docs/latest/commands/SCAN/shellSCAN cursor [MATCH pattern] [COUNT count] [TYPE type]
禁用keys、flushdb、flushall等命令
-
在
redis.conf中,找到SECURITY相关的配置,找到命令重命名相关的说明 -
官方文档
conf################################## SECURITY ################################### # 还有其它说明 # Command renaming (DEPRECATED). # # ------------------------------------------------------------------------ # WARNING: avoid using this option if possible. Instead use ACLs to remove # commands from the default user, and put them only in some admin user you # create for administrative purposes. # ------------------------------------------------------------------------ # # It is possible to change the name of dangerous commands in a shared # environment. For instance the CONFIG command may be renamed into something # hard to guess so that it will still be available for internal-use tools # but not available for general clients. # # Example: # # rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52 # # It is also possible to completely kill a command by renaming it into # an empty string: # # rename-command CONFIG "" # # Please note that changing the name of commands that are logged into the # AOF file or transmitted to replicas may cause problems. -
中文翻译
conf################################## SECURITY ################################### # 命令重命名(已弃用)。 # # ------------------------------------------------------------------------ # 警告:如有可能,请避免使用此选项。建议使用 ACL 从默认用户中移除命令, # 并将这些命令仅放在为管理目的创建的某个管理员用户中。 # ------------------------------------------------------------------------ # # 在共享环境中可以更改危险命令的名称。例如,可以将 CONFIG 命令重命名为 # 难以猜测的名称,这样它仍然可供内部工具使用,但不会对普通客户端开放。 # # 示例: # # rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52 # # 也可以通过将命令重命名为空字符串来完全禁用该命令: # # rename-command CONFIG "" # # 请注意,更改记录到 AOF 文件或传输到副本的命令名称可能会导致问题。 -
文档中已说明,命令重命名的方式已弃用。这里还是采用命令重命名的方式来禁用keys、flushdb、flushall等命令
-
推荐配置
confrename-command KEYS "" rename-command FLUSHDB "" rename-command FLUSHALL "" -
客户端使用keys、flushdb、flushall等命令时,将提示不可用
shell127.0.0.1:6379> keys * (error) ERR unknown command 'keys', with args beginning with: '*' 127.0.0.1:6379> flushdb (error) ERR unknown command 'flushdb', with args beginning with: 127.0.0.1:6379> flushall (error) ERR unknown command 'flushall', with args beginning with: -
如果aof文件中包含相关命令,可能会报错导致服务启动失败
-
查看日志报错信息
verilogUnknown command 'flushdb' reading the append only file appendonly.aof.1.incr.aof -
解决方法:将aof中相关的命令删除就可以启动服务了。生产环境这样操作可能会有风险
-
参考资料
注意事项
- 部分内容由AI生成
- 如有不对,欢迎指正!!!