- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我想设置密码以连接到 Redis 服务器。
正确的方法是在配置文件中使用 requirepass
指令。 http://redis.io/commands/auth
但是,设置值后,我在重新启动 Redis 时得到了这个:
Stopping redis-server: redis-server.
Starting redis-server: Segmentation fault (core dumped)
failed
这是为什么?
最佳答案
密码长度限制为 512 个字符。
在redis.h中:
#define REDIS_AUTHPASS_MAX_LEN 512
在 config.c 中:
} else if (!strcasecmp(argv[0],"requirepass") && argc == 2) {
if (strlen(argv[1]) > REDIS_AUTHPASS_MAX_LEN) {
err = "Password is longer than REDIS_AUTHPASS_MAX_LEN";
goto loaderr;
}
server.requirepass = zstrdup(argv[1]);
}
现在,配置文件的解析机制已经很基本了。使用 sds(字符串管理)库的 sdssplitargs 函数拆分所有行。此函数解释特定的字符序列,例如:
这里的问题是您的密码包含一个双引号字符。解析失败,因为字符串末尾没有匹配的双引号。在这种情况下,sdssplitargs 函数返回 NULL 指针。发生核心转储是因为在 config.c 代码中未正确检查此指针:
/* Split into arguments */
argv = sdssplitargs(lines[i],&argc);
sdstolower(argv[0]);
这是一个应该提交 IMO 的错误。
一个简单的解决方法是将双引号字符或任何其他解释字符替换为十六进制序列(即,双引号为\x22)。
关于authentication - 为什么 Redis 不能使用 requirepass 指令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13961520/
我在 docker 容器 (Alpine Linux) 中运行 Redis。我按照手册在文件/etc/redis.conf 中设置了密码 需要通过 Abcd-1234 但是,当我重新启动 Redis
我想设置密码以连接到 Redis 服务器。 正确的方法是在配置文件中使用 requirepass 指令。 http://redis.io/commands/auth 但是,设置值后,我在重新启动 Re
我有一个 Rails 应用程序,它使用 Redis 进行后台作业(通过 Resque)。这在开发和生产(在 VM 上)上运行良好已经有一段时间了。最近,在尝试访问生产环境中的 resque-web S
我尝试使用选项设置来提供密码,如下所示: CHANNEL_LAYERS = { 'default': { 'BACKEND': 'channels_redis.core.Red
我正在尝试将 Redis 部署为 Kubernetes 集群中的 StatefulSet(通过创建 Helm 图表)。我不会在官方 Redis Docker 镜像之上创建另一个 Redis 镜像,而是
有没有办法使用 Docker secret 从/run/secrets/redis-pass 读取并设置 redis --requirepass 标志? 例如: 在群管理器上设置redis-pass,
我是 node 和 redis 的新手,我正在使用 express 设置一个简单的服务器来与 redis 通信。 启动redis-server后,我启动 Node 服务器app.js 当我在没有 re
我是一名优秀的程序员,十分优秀!