最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

redis.conf中使用requirepass不生效的原因及解決方法

 更新時(shí)間:2023年07月16日 09:52:30   作者:小平雜記  
本文主要介紹了如何啟用requirepass,以及啟用requirepass為什么不會(huì)生效,從代碼層面分析了不生效的原因,以及解決方法,需要的朋友可以參考下

requirepass字段介紹

requirepass字段是redis.conf中的一個(gè)字段,可以看下redis.conf中的注釋

# IMPORTANT NOTE: starting with Redis 6 "requirepass" is just a compatibility
# layer on top of the new ACL system. The option effect will be just setting
# the password for the default user. Clients will still authenticate using
# AUTH <password> as usually, or more explicitly with AUTH default <password>
# if they follow the new protocol: both will work.
#
# The requirepass is not compatable with aclfile option and the ACL LOAD
# command, these will cause requirepass to be ignored.
#
# requirepass foobared

即這個(gè)字段是用來(lái)設(shè)置默認(rèn)用戶default的密碼的,用戶可以通過(guò)auth 或者auth default 來(lái)認(rèn)證,同時(shí)說(shuō)明了不能跟aclfile兼容,如果啟動(dòng)acl,則該字段會(huì)被忽略,會(huì)使用acl文件中的default用戶,如果沒有配置default用戶,則會(huì)新建一個(gè)nopass的default用戶并使用,哈哈,這就是為什么redis.conf配置了requirepass而不生效的原因,提前說(shuō)了。

如何啟用requirepass

  • 啟用redis.conf中的requirepass,改為自己的密碼password,同時(shí)啟用logfile,注意不要啟用aclfile,否則會(huì)不生效
  • 啟動(dòng)redis-server ./redis.conf
  • redis-cli -h localhost -p 6379訪問,發(fā)現(xiàn)需要進(jìn)行認(rèn)證,輸入auth password或者auth default password即可進(jìn)行訪問了,默認(rèn)登錄用戶就是default用戶
  • default用戶的密碼就是requirepass配置的密碼,在initServer中會(huì)調(diào)用ACLUpdateDefaultUserPassword(server.requirepass)函數(shù)設(shè)置default用戶的密碼

至于為什么啟用aclfile時(shí)會(huì)不生效,請(qǐng)繼續(xù)看

啟用requirepass時(shí)requirepass不生效?

現(xiàn)象

requirepass是default用戶的密碼,配置密碼后,aclfile也啟用時(shí),修改redis.conf配置后重啟redis后,redis-cli -h localhost -p port 無(wú)需認(rèn)證仍然可以訪問,即沒有生效

看下redis.conf中注釋可以知道跟aclfile是不兼容的,啟用aclfile時(shí),會(huì)忽略requirepass

原因

redis.conf中同時(shí)啟用requirepass和aclfile,redis在加載配置時(shí),會(huì)讀取aclfile,重新新建全局Users對(duì)象,調(diào)用ACLInitDefaultUser函數(shù)重新新建nopass的default用戶,先前已加載的defaultUser對(duì)象(密碼從requirepass來(lái))不會(huì)被用到,即default用戶是nopass的,但是如果acl文件中配置了default用戶以及配置了密碼,則還是需要認(rèn)證的

sds ACLLoadFromFile(const char *filename) {
      ...
    /* The default user pointer is referenced in different places: instead
         * of replacing such occurrences it is much simpler to copy the new
         * default user configuration in the old one. */
        user *new_default = ACLGetUserByName("default",7);
        if (!new_default) {
            new_default = ACLCreateDefaultUser();  // nopass的default用戶
        }
        ACLCopyUser(DefaultUser,new_default);
        ACLFreeUser(new_default);
        raxInsert(Users,(unsigned char*)"default",7,DefaultUser,NULL);
        raxRemove(old_users,(unsigned char*)"default",7,NULL);
        ACLFreeUsersSet(old_users);
        sdsfree(errors);
        return NULL;
       ...
}

解決方法

  • 不啟用aclfile,只使用requirepass,即只有default用戶了
  • 啟用aclfile,redis-cli登錄后,用config set requirepass xxx,會(huì)生效,然后重新redis-cli登錄訪問即可,如果需要重啟redis也生效,則進(jìn)行acl save(會(huì)寫default的user規(guī)則到aclfile中)

注意點(diǎn):config set requirepass xxx會(huì)調(diào)用updateRequirePass函數(shù),該函數(shù)會(huì)繼續(xù)調(diào)用ACLUpdateDefaultUserPassword更新default用戶的密碼(nopass變?yōu)橛忻艽a狀態(tài)),注意redis最新版本(7.0以上)只會(huì)在更新的內(nèi)容發(fā)生變化時(shí)才會(huì)調(diào)用到updateRequirePass函數(shù),如下面的sdsConfigSet函數(shù),在內(nèi)容有變化時(shí)才返回1

configSetCommand -> performInterfaceSet -> sdsConfigSet函數(shù)

performInterfaceSet會(huì)將sdsConfigSet函數(shù)返回值作為自己的返回值,

configSetCommand函數(shù)判斷performInterfaceSet返回值,如果為1,則

會(huì)調(diào)用到updateRequirePass函數(shù)

  • 使用上還是直接使用aclfile即可,將requirepass注釋掉,登錄后新增用戶,然后acl save

總結(jié)

本文主要介紹了如何啟用requirepass,以及啟用requirepass為什么不會(huì)生效,從代碼層面分析了不生效的原因,是因?yàn)橥瑫r(shí)啟用了aclfile導(dǎo)致requirepass中的密碼不會(huì)被用到,最后介紹了解決方法,建議使用上直接使用aclfile即可。

到此這篇關(guān)于redis.conf中使用requirepass不生效的原因及解決方法的文章就介紹到這了,更多相關(guān)redis.conf中使用requirepass不生效內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Redis中HyperLogLog的使用詳情

    Redis中HyperLogLog的使用詳情

    這篇文章主要介紹了Redis中HyperLogLog的使用詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • 在redisCluster中模糊獲取key方式

    在redisCluster中模糊獲取key方式

    這篇文章主要介紹了在redisCluster中模糊獲取key方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 緩存替換策略及應(yīng)用(以Redis、InnoDB為例)

    緩存替換策略及應(yīng)用(以Redis、InnoDB為例)

    本文以Redis、InnoDB為例給大家講解緩存替換策略及應(yīng)用,本文給大家提到五種置換策略,通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-07-07
  • redis的hash類型操作方法

    redis的hash類型操作方法

    Hash 是一個(gè) String 類型的 field(字段) 和 value(值) 的映射表,hash 特別適合用于存儲(chǔ)對(duì)象,這篇文章主要介紹了redis的hash類型的詳解,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06
  • redis 實(shí)現(xiàn)登陸次數(shù)限制的思路詳解

    redis 實(shí)現(xiàn)登陸次數(shù)限制的思路詳解

    這篇文章主要介紹了redis 實(shí)現(xiàn)登陸次數(shù)限制的思路詳解,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 使用lua+redis解決發(fā)多張券的并發(fā)問題

    使用lua+redis解決發(fā)多張券的并發(fā)問題

    這篇文章主要介紹了使用lua+redis解決發(fā)多張券的并發(fā)問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Redis中的AOF原理及分析

    Redis中的AOF原理及分析

    Redis的AOF通過(guò)記錄所有寫操作命令實(shí)現(xiàn)持久化,支持always/everysec/no三種同步策略,重寫機(jī)制優(yōu)化文件體積,與RDB結(jié)合可平衡數(shù)據(jù)安全與恢復(fù)效率
    2025-09-09
  • Redis 分片集群搭建與故障轉(zhuǎn)移實(shí)戰(zhàn)指南(推薦)

    Redis 分片集群搭建與故障轉(zhuǎn)移實(shí)戰(zhàn)指南(推薦)

    本文介紹了如何搭建一個(gè)最小的Redis分片集群,并詳細(xì)描述了集群的啟動(dòng)、創(chuàng)建、測(cè)試、伸縮和故障轉(zhuǎn)移過(guò)程,同時(shí),還介紹了如何使用RedisTemplate訪問分片集群,感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • redis發(fā)布和訂閱_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    redis發(fā)布和訂閱_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要為大家詳細(xì)介紹了redis發(fā)布和訂閱的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • redis底層數(shù)據(jù)結(jié)構(gòu)之ziplist實(shí)現(xiàn)詳解

    redis底層數(shù)據(jù)結(jié)構(gòu)之ziplist實(shí)現(xiàn)詳解

    這篇文章主要為大家介紹了redis底層數(shù)據(jù)結(jié)構(gòu)之ziplist實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12

最新評(píng)論

长葛市| 商河县| 阳西县| 建瓯市| 习水县| 东台市| 长春市| 白朗县| 澳门| 衡山县| 黄浦区| 乐昌市| 双峰县| 涡阳县| 临城县| 将乐县| 刚察县| 登封市| 普格县| 岱山县| 汨罗市| 大关县| 大港区| 满洲里市| 安多县| 沛县| 临江市| 辽中县| 黄骅市| 唐海县| 专栏| 长治市| 镇沅| 板桥市| 印江| 峨山| 江北区| 巴林右旗| 龙口市| 新建县| 安国市|