Redis快照位置未在配置中指定

时间:2019-03-22 20:55:04

标签: redis

运行一会儿后,我的redis实例出现写入错误:

(error) MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Commands that may modify the data set are disabled, because this instance is configured to report errors during writes if RDB snapshotting fails (stop-writes-on-bgsave-error option). Please check the Redis logs for details about the RDB error.

在日志中,我看到:

 9948:C 22 Mar 20:49:32.241 # Failed opening the RDB file root (in server root dir /var/spool/cron) for saving: Read-only file system

但是,我的redis配置文件是/etc/redis/redis.conf,确认如下:

 redis-cli -p 6379 info | grep 'config_file'
 config_file:/etc/redis/redis.conf

我在那里:

 dir /mnt/data/redis

实际上,那里有一个快照。

但是尽管如此,redis现在仍认为我的数据目录为

 redis-cli -p 6379 CONFIG GET dir
 1) "dir"
 2) "/var/spool/cron"

与上面引用的错误相对应。

有人能告诉我Redis启动后为什么/如何更改我的数据目录,从而不再是配置文件中指定的内容吗?

1 个答案:

答案 0 :(得分:1)

因此,答案是redis服务器被黑客入侵,并且配置已更改,事实证明这很容易做到。 (我应该指出,我没有理由认为这并不容易。在这种情况下,我只是假设默默无闻的安全性就足够了–错误。无论如何,这只是一个游乐场,而不是任何类型的生产服务器) 。

所以不要打开您的Redis端口。如果在AWS上使用安全组来限制对需要它的机器的访问,或者使用AUTH(这仍然不算太好,因为那时所有客户端都需要知道显然也是以明文形式发送的单个密码),或者使用一些控制访问的中间件。

轻松实现Redis,会破坏您的数据,甚至允许未经授权的SSH访问服务器。这就是为什么您不应该上限线的原因。