设为首页 收藏本站
查看: 2809|回复: 0

[经验分享] windows Redis绑定ip无效,Redis设置密码无效,Windows Redis 配置不生效, Windows Redis requirepass不生

[复制链接]

尚未签到

发表于 2017-12-7 18:37:48 | 显示全部楼层 |阅读模式
  windows Redis绑定ip无效,Redis设置密码无效,Windows Redis 配置不生效,
  Windows Redis requirepass不生效
  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  ©Copyright 蕃薯耀 2017年7月11日
  http://www.cnblogs.com/fanshuyao/
  一、Redis下载地址:
  https://github.com/MicrosoftArchive/redis/releases
  1、Redis-x64-3.2.100.msi 为安装版
  2、Redis-x64-3.2.100.zip 为压缩包
  二、由于我使用的是安装版,本次问题也是安装版的问题
  1、安装后的目录
  
DSC0000.png

  2、安装版的Redis安装后服务会自动启动。
DSC0001.png

  三、问题所在:
  由于安装版的Redis服务自启动,是直接通过redis-server.exe启动的,但是,启动时并没有加载Redis的配置文件(redis.windows.conf),导致redis 中bind配置和密码设置不生效。这导致我折腾了很久,后来才意识到这个问题。
  四、Redis自启动导致的常见的问题有:
  1、在CMD命令加载配置文件(redis.windows.conf)进行启动是不成功的。提示如下:



Java代码   DSC0002.png

  • D:\soft\Redis>redis-server.exe redis.windows.conf
  • [13760] 11 Jul 16:39:51.067 # Creating Server TCP listening socket 127.0.0.1:6379: bind: No error  
  因为Redis服务已经自启动,这里是不会再新启动的,故加载配置文件是失败的。也没有出现Redis启动的小盒子(下面有图片,慢慢往下看)
  2、密码失效
  虽然在配置文件(redis.windows.conf)设置了密码,密码为123456:



Java代码  

  • ################################## SECURITY ###################################
  • ……省略……
  • # requirepass foobared
  • requirepass 123456  
  但启动客户端进行Redis命令操作时,是不需要密码的,也没有提示无权限操作,这是一个严重的安全问题。



Java代码  

  • D:\soft\Redis>redis-cli.exe
  • 127.0.0.1:6379> get name  
  • "haha"  
  • 127.0.0.1:6379>  
  3、Redis访问IP绑定(bind)无效
  Redis默认绑定的ip为127.0.0.1,但如果想内网的机器都能访问,则需要设置内网的ip地址,如192.168.100.66,然后redis.host则可以设置为192.168.100.66访问Redis。
  Redis ip地址绑定默认说明:



Java代码  

  • ################################## NETWORK #####################################

  • # By default, if no "bind" configuration directive is specified, Redis listens  
  • # for connections from all the network interfaces available on the server.  
  • # It is possible to listen to just one or multiple selected interfaces using
  • # the "bind" configuration directive, followed by one or more IP addresses.  
  • #
  • # Examples:
  • #
  • # bind 192.168.1.100 10.0.0.1  
  • # bind 127.0.0.1 ::1  
  • #
  • # ~~~ WARNING ~~~ If the computer running Redis is directly exposed to the
  • # internet, binding to all the interfaces is dangerous and will expose the
  • # instance to everybody on the internet. So by default we uncomment the  
  • # following bind directive, that will force Redis to listen only into
  • # the IPv4 lookback interface address (this means Redis will be able to  
  • # accept connections only from clients running into the same computer it
  • # is running).
  • #
  • # IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES
  • # JUST COMMENT THE FOLLOWING LINE.
  • # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • bind 127.0.0.1  
  主要是意思是,如果设置了bind,只能通过绑定的地址访问Redis。
  如果不设置bind,则所有地址都可以访问,如果在项目部署外网,所有人都可以访问到,所以这里也是个注意的地址,还是设置bind比较安全。
  绑定多个ip地址:



Java代码  

  • bind 127.0.0.1 192.168.100.66  
  127.0.0.1和192.168.100.66之间通过空格分隔,不是逗号。
  但如果Redis是自启动的,没有加载配置文件(redis.windows.conf)启动,这里的设置也是无效的。
  如果不绑定ip地址(192.168.100.66),直接设置redis.host=192.168.100.66是访问不了的,出现以下的错误:



Java代码  

  • redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
  所以说,Redis由Windows自启动的,配置文件的设置都是无效的
  五、解决方案:
  1、禁用Redis的自启动,设置为手动
  2、不要使用Redis安装版,使用压缩版
  3、通过命令行CMD加载配置文件(redis.windows.conf)启动



Java代码  

  • D:\soft\Redis>redis-server.exe redis.windows.conf
  通过Cmd启动的界面都是不一样的,如下:
DSC0003.png

  看到了正常启动的盒子。
  4、再新打开一个cmd(不要关闭之前打的Cmd窗口),启动Redis客户端:



Java代码  

  • D:\soft\Redis>redis-cli.exe
  5、获取Redis中某个key的值,提示无权限。



Java代码  

  • 127.0.0.1:6379> get name  
  • (error) NOAUTH Authentication required.
  • 127.0.0.1:6379>  
  这样才是对的。
  6、通过密码进入访问,使用 auth + 密码,如下:



Java代码  

  • 127.0.0.1:6379> get name  
  • (error) NOAUTH Authentication required.
  • 127.0.0.1:6379> auth 123456  
  • OK
  • 127.0.0.1:6379> get name  
  • "haha"  
  • 127.0.0.1:6379>  
  如果Redis设置了密码,Spring整合Redis也是需要设置密码的,具体的一些配置:
  7、Spring整合Redis的一些配置(JedisPool单机版):
  Spring.xml文件配置的JedisPool池:



Java代码  

  • <bean id="jedisPool" class="redis.clients.jedis.JedisPool">  
  •         <constructor-arg name="poolConfig" ref="jedisPoolConfig"></constructor-arg>  
  •         <constructor-arg name="host" value="${redis.host}" />  
  •         <constructor-arg name="port" value="${redis.port}" type="int" />  
  •         <constructor-arg name="timeout" value="${redis.timeout}" type="int" />  
  •         <constructor-arg name="password" value="#{'${redis.password}'!=''?'${redis.password}':null}" />  
  •         <!-- <constructor-arg name="database" value="${redis.db.index}" type="int" /> -->  
  •     </bean>
  redis.properties配置文件



Java代码  

  • #*****************jedis连接参数设置*********************#
  • #redis服务器ip#
  • redis.host=192.168.100.66  
  • #redis服务器端口号#
  • redis.port=6379  
  • #超时时间:单位ms#
  • redis.timeout=3000  
  • #授权密码,没有密码则不设置,但属性要保留#
  • redis.password=123456  
  六、如果不是安装版的Redis,又想让Redis自启动的时候,可以向Windows添加自启动服务:
  1、进入到Redis的安装目录



Java代码  

  • D:\soft\Redis>
  2、执行命令:



Java代码  

  • redis-server --service-install redis.windows.conf --loglevel notice --service-name Redis
  3、完整示例:



Java代码  

  • D:\soft\Redis>redis-server --service-install redis.windows.conf --loglevel notice --service-name Redis
  --service-install redis.windows.conf  指定redis配置文件
  --loglevel notice 指定日志级别
  --service-name Redis 指定服务名称
  运行结果如下( Redis successfully installed as a service.):



Java代码  

  • D:\soft\Redis>redis-server --service-install redis.windows.conf --loglevel notice --service-name Redis
  • [7176] 12 Jul 09:34:50.730 # Granting read/write access to 'NT AUTHORITY\NetworkService' on: "D:\soft\Redis" "D:\soft\Redis\"  
  • [7176] 12 Jul 09:34:50.730 # Redis successfully installed as a service.  
  4、安装服务后,默认不是马上启动的,但启动类型是自启动,如果想马上启动,请执行命令:



Java代码  

  • redis-server --service-start



Java代码  

  • 服务成功启动显示如下:
  • [9876] 12 Jul 09:57:41.251 # Redis service successfully started.  
  或者重启电脑。
  停止服务:



Java代码  

  • redis-server --service-stop
  5、删除Redis服务:



Java代码  

  • redis-server --service-uninstall
  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  ©Copyright 蕃薯耀 2017年7月11日
  http://www.cnblogs.com/fanshuyao/

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-421885-1-1.html 上篇帖子: can t connect to mysql server on 'localhost'解决方法 下篇帖子: Building Apps for Windows 10 on LattePanda–Jump Start
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表