redis远程连接与密码验证

redis开启远程访问

redis默认只允许本地访问,要使redis可以远程访问可以修改redis.conf
 
打开redis.conf文件在 NETWORK部分有说明

解决办法:注释掉bind 127.0.0.1可以使所有的ip访问redis
若是想指定多个ip访问,但并不是全部的ip访问,可以bind

注意
下面还有个说明
在redis3.2之后,redis增加了protected-mode,在这个模式下,即使注释掉了bind 127.0.0.1,再访问redisd时候还是报错,如下

 
(error) DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to clients. In this mode connections are only accepted from the loopback interface. If you want to connect from external computers to Redis you may adopt one of the following solutions: 1) Just disable protected mode sending the command 'CONFIG SET protected-mode no' from the loopback interface by connecting to Redis from the same host the server is running, however MAKE SURE Redis is not publicly accessible from internet if you do so. Use CONFIG REWRITE to make this change permanent. 2) Alternatively you can just disable the protected mode by editing the Redis configuration file, and setting the protected mode option to 'no', and then restarting the server. 3) If you started the server manually just for testing, restart it with the '--protected-mode no' option. 4) Setup a bind address or an authentication password. NOTE: You only need to do one of the above things in order for the server to start accepting connections from the outside.
 
修改办法:protected-mode no



redis配置密码


1.通过配置文件进行配置
yum方式安装的redis配置文件通常在/etc/redis.conf中,打开配置文件找到
[plain] view plain copy
  1. #requirepass foobared  
去掉行前的注释,并修改密码为所需的密码,保存文件
[plain] view plain copy
  1. requirepass myRedis  
重启redis
[plain] view plain copy
  1. sudo service redis restart  
  2. #或者  
  3. sudo service redis stop  
  4. sudo redis-server /etc/redis.conf  
这个时候尝试登录redis,发现可以登上,但是执行具体命令是提示操作不允许
[plain] view plain copy
  1. redis-cli -h 127.0.0.1 -p 6379  
  2. redis 127.0.0.1:6379>  
  3. redis 127.0.0.1:6379> keys *  
  4. (error) ERR operation not permitted  
  5. redis 127.0.0.1:6379> select 1  
  6. (error) ERR operation not permitted  
  7. redis 127.0.0.1:6379[1]>   
尝试用密码登录并执行具体的命令看到可以成功执行
[plain] view plain copy
  1. redis-cli -h 127.0.0.1 -p 6379 -a myRedis  
  2. redis 127.0.0.1:6379> keys *  
  3. 1) "myset"  
  4. 2) "mysortset"  
  5. redis 127.0.0.1:6379> select 1  
  6. OK  
  7. redis 127.0.0.1:6379[1]> config get requirepass  
  8. 1) "requirepass"  
  9. 2) "myRedis"  


2.通过命令行进行配置

[plain] view plain copy
  1. redis 127.0.0.1:6379[1]> config set requirepass my_redis  
  2. OK  
  3. redis 127.0.0.1:6379[1]> config get requirepass  
  4. 1) "requirepass"  
  5. 2) "my_redis"  
无需重启redis
使用第一步中配置文件中配置的老密码登录redis,会发现原来的密码已不可用,操作被拒绝
[plain] view plain copy
  1. redis-cli -h 127.0.0.1 -p 6379 -a myRedis  
  2. redis 127.0.0.1:6379> config get requirepass  
  3. (error) ERR operation not permitted  
使用修改后的密码登录redis,可以执行相应操作
[plain] view plain copy
  1. redis-cli -h 127.0.0.1 -p 6379 -a my_redis  
  2. redis 127.0.0.1:6379> config get requirepass  
  3. 1) "requirepass"  
  4. 2) "my_redis  
尝试重启一下redis,用新配置的密码登录redis执行操作,发现新的密码失效,redis重新使用了配置文件中的密码
[plain] view plain copy
  1. sudo service redis restart  
  2. Stopping redis-server:                                     [  OK  ]  
  3. Starting redis-server:                                     [  OK  ]  
  4. redis-cli -h 127.0.0.1 -p 6379 -a my_redis  
  5. redis 127.0.0.1:6379> config get requirepass  
  6. (error) ERR operation not permitted  
  7. redis-cli -h 127.0.0.1 -p 6379 -a myRedis  
  8. redis 127.0.0.1:6379> config get requirepass  
  9. 1) "requirepass"  
  10. 2) "myRedis"  

除了在登录时通过 -a 参数制定密码外,还可以登录时不指定密码,而在执行操作前进行认证。
[plain] view plain copy
  1. redis-cli -h 127.0.0.1 -p 6379  
  2. redis 127.0.0.1:6379> config get requirepass  
  3. (error) ERR operation not permitted  
  4. redis 127.0.0.1:6379> auth myRedis  
  5. OK  
  6. redis 127.0.0.1:6379> config get requirepass  
  7. 1) "requirepass"  
  8. 2) "myRedis"  


3.master配置了密码,slave如何配置

若master配置了密码则slave也要配置相应的密码参数否则无法进行正常复制的。
slave中配置文件内找到如下行,移除注释,修改密码即可
[plain] view plain copy
  1. #masterauth  mstpassword 

你可能感兴趣的:(redis远程连接与密码验证)