我没有获得redis node.js文档以使用redis auth.
根据这个例子:
var redis = require("redis"),
client = redis.createClient();
// This command is magical. Client stashes the password and will issue on every connect.
client.auth("somepass");
Run Code Online (Sandbox Code Playgroud)
在我的代码中,我有以下内容:
var redis = require("redis");
r = redis.createClient(6379,'xxx.xxx.xxx.xxx');
r.auth("yyyyyyyy");
app.get('/', function(req, res){
r.set("foo", 'bar');
res.writeHead(200, {'Content-Type': 'image/gif'});
res.end('Hello');
});
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
Express server listening on port 8070 in development mode
/home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbNodejsServer/node_modules/redis/index.js:468
throw callback_err;
^
Error: Auth error: Error: ERR Client sent AUTH, but no password is set
at Command.callback (/home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbNodejsServer/node_modules/redis/index.js:163:43)
at RedisClient.return_error (/home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbNodejsServer/node_modules/redis/index.js:464:25)
at HiredisReplyParser.<anonymous> (/home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbNodejsServer/node_modules/redis/index.js:253:14)
at HiredisReplyParser.emit (events.js:67:17)
at HiredisReplyParser.execute (/home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbNodejsServer/node_modules/redis/lib/parser/hiredis.js:41:18)
at RedisClient.on_data (/home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbNodejsServer/node_modules/redis/index.js:440:27)
at Socket.<anonymous> (/home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbNodejsServer/node_modules/redis/index.js:70:14)
at Socket.emit (events.js:67:17)
at TCP.onread (net.js:367:14)
[7]+ Killed node app.js 8070
So, what is the proper way to auth?
Run Code Online (Sandbox Code Playgroud)
小智 5
这个问题的另一个原因可能是在启动 redis-server 时没有指定你的 redis.conf (如果你把“requirepass”放在里面)。
在这种情况下,redis 服务器以默认配置启动(即没有启用“requirepass”选项),因此不接受您的 AUTH 命令。
./src/redis-server redis.conf
Run Code Online (Sandbox Code Playgroud)
这才是auth的正确使用方法。
我相信您正在尝试使用旧版本的 Redis 服务器,其协议不受 node_redis 支持(反之亦然)。
或者,您可能无法连接到您认为受密码保护的实例,或者您尚未在目标实例的配置中设置密码。
我建议您尝试使用 redis-cli 连接到实例并使用 auth 来测试身份验证(即绕过 node.js)。
归档时间: |
|
查看次数: |
16299 次 |
最近记录: |