Unable to AUTH to MASTER: -ERR Client sent AUTH, but no password is set「建议收藏」

Unable to AUTH to MASTER: -ERR Client sent AUTH, but no password is set「建议收藏」问题描述:redis主从复制时,想要增加密码认证功能。初学了解不多,修改了master的redis_6379.conf,增加”masterauth 123456″,同时修改slave的redis_6380.conf,增加”masterauth 123456″。认为主从配置的认证密码的参数都是masterauth。重新启动后用redis-cli连接slave,输入info replicati…

大家好,又见面了,我是你们的朋友全栈君。

问题描述:

redis主从复制时,想要增加密码认证功能。初学了解不多,修改了master的redis_6379.conf,增加”masterauth  123456″,同时修改slave的redis_6380.conf,增加”masterauth  123456″。认为主从配置的认证密码的参数都是masterauth。重新启动后用redis-cli连接slave,输入info replication,显示master_link_status:down。

在slave的日志会出现:

[9660] 26 Sep 19:03:17.440 # Timeout connecting to the MASTER…

[9660] 26 Sep 19:03:17.440 * Connecting to MASTER 192.168.1.12:6379

[9660] 26 Sep 19:03:17.442 * MASTER <-> SLAVE sync started

[9660] 26 Sep 19:03:17.443 * Non blocking connect for SYNC fired the event.

[9660] 26 Sep 19:03:17.445 * Master replied to PING, replication can continue…

[9660] 26 Sep 19:03:17.445 * Unable to AUTH to MASTER: -ERR Client sent AUTH, but no password is set

意思就是slave用一个密码去登陆master,但是master端并没有设置密码。

经查问题在于master要配置的参数不是masterauth而是requirepass:

requirepass 123456 (redis_6379.conf,master)

masterauth 123456 (redis_6380.conf,slave)

Redis默认配置是不需要密码认证的,也就是说只要连接的Redis服务器的host和port正确,就可以连接使用。这在安全性上会有一定的问题,所以需要启用Redis的认证密码,增加Redis服务器的安全性。

1. 修改配置文件

Redis的配置文件默认在/etc/redis.conf,找到如下行:

#requirepass foobared

去掉前面的注释,并修改为所需要的密码:

requirepass myPassword

 

2. 重启Redis

如果Redis已经配置为service服务,可以通过以下方式重启:

service redis restart

如果Redis没有配置为service服务,可以通过以下方式重启:

/usr/local/bin/redis-cli shutdown /usr/local/bin/redis-server /etc/redis.conf

 

3. 登录验证

设置Redis认证密码后,客户端登录时需要使用-a参数输入认证密码,不添加该参数虽然也可以登录成功,但是没有任何操作权限。如下:

$ ./redis-cli -h 127.0.0.1 -p 6379 127.0.0.1:6379> keys * (error) NOAUTH Authentication required.

使用密码认证登录,并验证操作权限:

$ ./redis-cli -h 127.0.0.1 -p 6379 -a myPassword 127.0.0.1:6379> config get requirepass 1) “requirepass” 2) “myPassword”

看到类似上面的输出,说明Reids密码认证配置成功。

除了按上面的方式在登录时,使用-a参数输入登录密码外。也可以不指定,在连接后进行验证:

$ ./redis-cli -h 127.0.0.1 -p 6379 127.0.0.1:6379> auth myPassword OK 127.0.0.1:6379> config get requirepass 1) “requirepass” 2) “myPassword” 127.0.0.1:6379>

 

4. 在命令行客户端配置密码

前面介绍了通过redis.conf配置密码,这种配置方式需要重新启动Redis。也可以通命令行客户端配置密码,这种配置方式不用重新启动Redis。配置方式如下:

127.0.0.1:6379> config set requirepass newPassword OK 127.0.0.1:6379> config get requirepass 1) “requirepass” 2) “newPassword”

注意:使用命令行客户端配置密码,重启Redis后仍然会使用redis.conf配置文件中的密码。

 

5. 在Redis集群中使用认证密码

如果Redis服务器,使用了集群。除了在master中配置密码外,也需要在slave中进行相应配置。在slave的配置文件中找到如下行,去掉注释并修改与master相同的密码即可:

# masterauth master-password

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/147133.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 5大优秀黑客必逛技术网站

    5大优秀黑客必逛技术网站5大优秀黑客必逛技术网站HackForums最理想的黑客技术学习技术根据地,也适用于开发人员游戏开发者,程序员,图形设计师以及网络营销人士HackThisSite提供合法而安全的网络安全资源,可以通过·各类挑战题目测试自己的黑客技能EnilZone一个专门面向黑科群体的论坛,其中也涉及科学,编程以及艺术等领域的内容Exploit-DB提供一整套庞大的归档体…

    2022年7月15日
    23
  • 利用CANdb++ Editor在DBC文件中进行报文解析(详细教程)

    利用CANdb++ Editor在DBC文件中进行报文解析(详细教程)

    2020年11月8日
    2.4K
  • 内存映射文件「建议收藏」

    内存映射文件「建议收藏」在做科研,实现一些大数据的算法的时候,经常要调用一些文件的I/O函数,在数据量很大的时候,除了设计的算法和数据结构的耗时以外,其实主要的耗时还是文件的I/O。因为一般常规的方法就是先读出磁盘文件的内容到内存中,然后修改,最后写回到磁盘上。读磁盘文件是要经过一次系统调用,先将文件的内容从磁盘拷贝到内核空间的一个缓冲区,然后再将这些数据拷贝到用户空间,实际上是两次数据拷贝。写回同样也需要经过两次数据拷

    2022年6月17日
    54
  • 使用yum卸载、安装jdk

    使用yum卸载、安装jdk由于EPICS工作环境下安装CSS,但CSS不支持开源jdk,所以首先需要卸载openjdk,然后再安装jdk-8u144-linux-x64.tar.gz(CSS只支持8及以上版本)。一、卸载,需卸载干净,不然会出各种覆盖问题,很麻烦!安装好的CentOS会自带OpenJdk,用命令java-version,会有下面的信息:javaversion"1.6.0"OpenJDK Run…

    2022年6月6日
    61
  • 【最苦逼的不是你,有人比你更苦逼】

    【最苦逼的不是你,有人比你更苦逼】你又在论坛上开了一个长贴,标题写着:“我的婆婆哟,真是个极品!”   你婆婆过春节又来你家住着了,不仅他们老两口,还带着七大姑八大姨,一住就是一个月,简直占领了你的小家。他们的生活习惯完全和你不一样,你感到没有隐私……但你不能抱怨,你得表现得想个得体的主妇,你不能让你的老公感到不愉快,那是他最亲的家人。   于是,和他们生活的日子里,天天跟自己生气,躲在角落里发脾气。有一天,你实在

    2022年5月4日
    28
  • Socket和DatagramSocket的区别[通俗易懂]

    Socket和DatagramSocket的区别[通俗易懂]简而言之就是:Socket使用的tcp连接,需要先连接之后才能发送数据。DatagramSocket使用的UDP连接,客户端不需要先连接数据,可以直接发送给指定服务端。DatagramSocket:客户端发送(直接发送数据,没有连接的过程):protectedvoidconnectServerWithUDPSocket(Contextcontext,Stringid…

    2022年6月11日
    41

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号