docker部署redis后,修改配置文件的requirepass后无效

news2024/11/17 0:25:29

解决方案

执行docker run命令时不要使用参数–requirepass

docker部署redis流程(问题复现)

1. 启动redis容器

在服务器docker运行时,执行下列命令。(会自动在远程仓库下载镜像)
redis:

docker run \
--restart=always \
--privileged=true \
--log-opt max-size=100m \
--log-opt max-file=3 \
-p 6379:6379 \
--name redis_1 \
-v redis_conf:/etc/redis \
-v redis_data:/data \
-v /etc/localtime:/etc/localtime:ro \
-d redis:7.0.5 \
redis-server /etc/redis/redis.conf \
--appendonly yes \
--requirepass 123456

–privileged=true 这个参数,容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限
–restart=always 总是开机启动(可以改为其他形式或者直接取消 https://blog.csdn.net/chj_1224365967/article/details/109029856
–log是日志方面的(https://www.cnblogs.com/cxbhakim/p/8677928.html
-p 6379:6379 将6379端口挂载出去
–name 给这个容器取一个名字
-v 数据卷挂载
redis_conf:/etc/redis/redis.conf 这里是将 liunx 路径下的 redis_conf(docker会自动生成一个路径统一管理) 和redis下的redis.conf 挂载在一起。
redis_data:/data 这个同上
当宿主机为 Linux 系统时,我们可以直接将宿主机上的/etc/timezone和/etc/localtime挂载到容器中,这样可以保持容器和宿主机时区和时间一致。
-d 表示后台启动redis
redis 镜像名称
redis-server /etc/redis/redis.conf 以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录 /etc/redis/redis.conf 也就是liunx下的redis_conf
–appendonly yes 开启redis 持久化 (aof append only file)

注意这里的密码最好别设置,否则这里设置的密码的优先级会高于配置文件,以至于修改配置文件中的requirepass后,redis密码并没有被修改
–requirepass 123456 设置密码 (如果你是通过docker 容器内部连接的话,就随意,可设可不设。但是如果想向外开放的话,一定要设置)

再执行docker ps,容器启动成功后如下图所示。
在这里插入图片描述

2. 找到挂载在服务器上的文件路径

执行docker volume ls,找到刚配置的volume名称。
在这里插入图片描述
然后执行docker volume inspect redis_conf,会找到该redis_conf在服务器上的路径。
在这里插入图片描述
在该目录下,放入文件redis.conf
在这里插入图片描述

3. 修改配置文件

自己新建一个文件,将下面的配置复制粘贴进去即可。(当然个人推荐去下载官方配置,不清楚的配置可以自行百度)
然后修改一下requirepass再重启容器即可成功修改密码(注意: 如果执行docker run命令时使用了参数–requirepass,则修改了配置之后无法修改redis密码)。

# 默认情况bind=127.0.0.1只能接受本机的访问请求
# 不写的情况下,无限制接受任何ip地址的访问
# 生产环境肯定要写你应用服务器的地址;服务器是需要远程访问的,所以需要将其注释掉

# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1 ::1
# bind 127.0.0.1

# 如果开启了protected-mode,那么在没有设定bind ip且没有设密码的情况下,
# Redis只允许接受本机的响应
# 将本机访问保护模式设置no,redis在服务器上的时候就需要设置为no
protected-mode no

# 端口号,默认 6379
port 6379

# 设置tcp的backlog,backlog其实是一个连接队列,backlog队列总和=未完成三次握手队列 + 已经完成三次握手队列。
# 在高并发环境下需要一个高backlog值来避免慢客户端连接问题。
# 注意Linux内核会将这个值减小到/proc/sys/net/core/somaxconn的值(128),
# 所以需要确认增大/proc/sys/net/core/somaxconn和/proc/sys/net/ipv4/tcp_max_syn_backlog(128)两个值来达到想要的效果
tcp-backlog 511

# 设置客户端连接后进行任何其他指定前需要使用的密码。
# 警告:因为 redis 速度相当快,所以在一台比较好的服务器下,
# 一个外部的用户可以在一秒钟进行 150K 次的密码尝试,
# 这意味着你需要指定非常非常强大的密码来防止暴力破解。
requirepass 123456

# 设置客户端连接时的超时时间,单位为秒。当客户端在这段时间内没有发出任何指令,那么关闭该连接
timeout 0 

# 指定 TCP 连接是否为长连接,"侦探"信号有 server 端维护。默认为 0.表示禁用。
tcp-keepalive 300 

# 默认情况下,redis 不是在后台运行的,如果需要在后台运行,把该项的值更改为 yes。
daemonize no 

supervised no

# 当 Redis 在后台运行的时候,Redis 默认会把 pid 文件放在/var/run/redis.pid,
# 你可以配置到其他地址。当运行多个 redis 服务时,需要指定不同的 pid 文件和端口。
pidfile /var/run/redis_6379.pid 

# log 等级分为 4 级,debug,verbose, notice, 和 warning。生产环境下一般开启 notice。
loglevel notice 

# 配置 log 文件地址,默认使用标准输出,即打印在命令行终端的窗口上,修改为日志文件目录。
logfile "" 

# 设置数据库的个数,可以使用 SELECT 命令来切换数据库。默认使用的数据库是 0 号库。默认 16 个库。
databases 16 

always-show-logo yes

# 保存数据快照的频率,即将数据持久化到 dump.rdb 文件中的频度。
# 用来描述"在多少秒期间至少多少个变更操作"触发 snapshot 数据保存动作。
# 默认设置,意思是:
# if(60 秒之内有 10000 个 keys 发生变化时){
# 	进行镜像备份
# }else if(300 秒之内有 10 个 keys 发生了变化){
# 	进行镜像备份
# }else if(900 秒之内有 1 个 keys 发生了变化){
# 	进行镜像备份
# }
save 900 1
save 300 10
save 60 10000

# 当持久化出现错误时,是否依然继续进行工作,是否终止所有的客户端 write 请求。
# 默认设置"yes"表示终止,一旦 snapshot 数据保存故障,那么此 server 为只读服务。
# 如果为"no",那么此次 snapshot 将失败,但下一次 snapshot 不会受到影响,
# 不过如果出现故障,数据只能恢复到"最近一个成功点"。
stop-writes-on-bgsave-error yes 

# 在进行数据镜像备份时,是否启用 rdb 文件压缩手段,默认为 yes。
# 压缩可能需要额外的cpu 开支,不过这能够有效的减小 rdb 文件的大,有利于存储/备份/传输/数据恢复。
rdbcompression yes 

# 读取和写入时候,会损失 10%性能是否进行校验和,是否对 rdb 文件使用 CRC64 校验和,默认为"yes",
# 那么每个 rdb 文件内容的末尾都会追加 CRC 校验和,利于第三方校验工具检测文件完整性。
rdbchecksum yes 

# 镜像备份文件的文件名,默认为 dump.rdb。
dbfilename dump.rdb 

# 数据库镜像备份的文件 rdb/AOF 文件放置的路径。
# 这里的路径跟文件名要分开配置是因为Redis 在进行备份时,先会将当前数据库的状态写入到一个临时文件中,
# 等备份完成时,再把该临时文件替换为上面所指定的文件,而这里的临时文件和上面所配置的备份文件都会放在这个指定的路径当中。
dir ./ 

replica-serve-stale-data yes

replica-read-only yes

repl-diskless-sync no

# slave 与 master 的连接,是否禁用 TCP nodelay 选项。
# "yes"表示禁用,那么 socket 通讯中数据将会以 packet 方式发送(packet 大小受到 socket buffer 限制)。
# 可以提高 socket通讯的效率(tcp交互次数),但是小数据将会被buffer,不会被立即发送,对于接受者可能存在延迟。
# "no"表示开启 tcp nodelay 选项,任何数据都会被立即发送,及时性较好,但是效率较低,建议设为 no。
repl-disable-tcp-nodelay no 

replica-priority 100

lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no

# 默认情况下,redis 会在后台异步的把数据库镜像备份到磁盘,但是该备份是非常耗时的,而且备份也不能很频繁。
# 所以 redis 提供了另外一种更加高效的数据库备份及灾难恢复方式。
# 开启 append only 模式之后,redis 会把所接收到的每一次写操作请求都追加appendonly.aof 文件中,
# 当 redis 重新启动时,会从该文件恢复出之前的状态。但是这样会造成 appendonly.aof 文件过大,
# 所以 redis 还支持了 BGREWRITEAOF 指令,对appendonly.aof 进行重新整理。
# 如果不经常进行数据迁移操作,推荐生产环境下的做法为关闭镜像,开启 appendonly.aof,
# 同时可以选择在访问较少的时间每天对 appendonly.aof进行重写一次。
# 另外,对 master 机器,主要负责写,建议使用 AOF,对于 slave,主要负责读,挑选出 1-2 台开启 AOF,其余的建议关闭。
appendonly yes

# aof 文件名字,默认为 appendonly.aof。
appendfilename "appendonly.aof"

# 在 AOF rewrite 期间,是否对 aof 新记录的 append 暂缓使用文件同步策略,主要考虑磁盘 IO开支和请求阻塞时间。
# 默认为 no,表示"不暂缓",新的 aof 记录仍然会被立即同步。
no-appendfsync-on-rewrite no

# 当 Aof log 增长超过指定比例时,重写 log file, 设置为 0 表示不自动重写 Aof 日志,
# 重写是为了使 aof 体积保持最小,而确保保存最完整的数据。
auto-aof-rewrite-percentage 100

# 触发 aof rewrite 的最小文件尺寸。
auto-aof-rewrite-min-size 64mb

aof-load-truncated yes

aof-use-rdb-preamble yes

# lua 脚本运行的最大时间。
lua-time-limit 5000

# "慢操作日志"保留的最大条数,"记录"将会被队列化,如果超过了此长度,旧记录将会被移除。
# 可以通过"SLOWLOG args"查看慢记录的信息(SLOWLOG get10,SLOWLOG reset)。
slowlog-max-len 128

notify-keyspace-events ""



# -------------------------------------------这部分配置包含压缩列表、跳表等底层数据结构配置----------------

# hash 类型的数据结构在编码上可以使用 ziplist 和 hashtable。
# ziplist 的特点就是文件存储(以及内存存储)所需的空间较小,在内容较小时,
# 性能和 hashtable 几乎一样.因此 redis 对hash 类型默认采取 ziplist。
# 如果 hash 中条目的条目个数或者 value 长度达到阀值,将会被重构为 hashtable。
# 这个参数指的是 ziplist 中允许存储的最大条目个数,,默认为 512,建议为 128。
hash-max-ziplist-entries 512

# ziplist 中允许条目 value 值最大字节数,默认为 64,建议为 1024
hash-max-ziplist-value 64

list-max-ziplist-size -2

list-compress-depth 0

# intset 中允许保存的最大条目个数,如果达到阀值,intset 将会被重构为 hashtable。
set-max-intset-entries 512

# zset 为有序集合,2 中编码类型:ziplist,skiplist。因为"排序"将会消耗额外的性能,当 zset中数据较多时,将会被重构为 skiplist。
zset-max-ziplist-entries 128
zset-max-ziplist-value 64

hll-sparse-max-bytes 3000

stream-node-max-bytes 4096
stream-node-max-entries 100

# 是否开启顶层数据结构的 rehash 功能,如果内存允许,请开启。rehash 能够很大程度上提高K-V 存取的效率。
activerehashing yes

# Redis server 执行后台任务的频率,默认为 10,此值越大表示 redis 对"间歇性 task"的执行次数越频繁(次数/)
# "间歇性 task"包括"过期集合"检测、关闭"空闲超时"的连接等,此值必须大于 0 且小于 500。
# 此值过小就意味着更多的 cpu 周期消耗,后台 task 被轮询的次数更频繁。此值过大意味着"内存敏感"性较差。
# 建议采用默认值。
hz 10

dynamic-hz yes

aof-rewrite-incremental-fsync yes

rdb-save-incremental-fsync yes

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/174759.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高等数学【合集】

文章目录极限计算求导计算极限计算 第一步:先看x→value确定类型第一步:先看x \rightarrow value确定类型第一步:先看x→value确定类型 7种未定型:∞∞,00,1∞,0∞,∞0,00,∞−∞7种未定型: \frac{\infty}{\infty},\frac{0}{0},1^{\infty},0^{\infty},\infty^0,0^0,\infty-\inf…

win10开机后桌面无图标问题解决办法

本篇文章主要讲解win10下桌面无图标的问题解决办法。 日期:2023年1月21日 作者:任聪聪 主要原因: 这个问题的原因是资源管理器或者注册表中有垃圾注册数据导致,实际上和显卡没有任何关系,但有些情况是由于驱动问题导致…

OSPF 特殊区域介绍、Stub、Totally Stub、NSSA、Totally NSSA

1.1.0 路由 OSPF 特殊区域介绍、Stub、Totally Stub、NSSA、Totally NSSA 特殊区域的产生和注意事项 产生:OSPF通过划分区域减小网络内路由器的LSDB的规模。对于那些位于AS边界的非骨干区域如果该设备是较为低端的路由器,则无法承受过多的路由条目。为此…

前端学习第一阶段:1-4章

学习总结:前四章学习总体来说不太难理解,如果时间宽裕,一天之内可以学完。 第一章 前端就业班课程导学 第二章 HTML5 CSS3课前导学 第三章 VSCode编辑器的使用 第四章 HTML 4-1 HTML初识 List item 01-基础班学习路线 List item 02-HTML简…

【Linux_】环境变量

【Linux_】环境变量 心有所向,日复一日,必有精进专栏:《Linux_》作者:沂沐沐目录 【Linux_】环境变量 什么是环境变量 常见变量 查看环境变量方法 环境变量相关的命令 通过系统调用获取或设置环境变量 环境变量通常是具有全…

代码随想录算法训练营第22天 二叉树 java :235. 二叉树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点

文章目录LeetCode 236. 二叉树的最近公共祖先题目讲解思路LeetCode 701.二叉搜索树中的插入操作题目讲解思路LeetCode 450.删除二叉搜索树中的节点题目讲解思路示图总结既然还是要生活,那么就学会主宰生活LeetCode 236. 二叉树的最近公共祖先 题目讲解 思路 求最小…

【数据结构与算法】详解二叉树以及模拟实现二叉树

文章目录前言:1.二叉树的定义2.二叉树的相关术语3.二叉树的性质4.特殊的二叉树5.二叉树的遍历前序遍历中序遍历后序遍历层序遍历6.获取树中节点的个数方法1:遍历思想方法2:子问题的思想7.获取叶子节点的个数方法1:遍历思想方法2:子问题的思想8.获取第K层节点的个数9.获取二叉树…

链表(LinkedList)

链表(LinkedList) 链表是有序的列表,但是其在内存的存储不一定连续 由这张图我们可以看出 链表是以节点的方式来存储的,是链式存储 每个节点包含data域,next域:指向下一个节点 我们可以发现链表的各个节点不一定是连续存储的 …

再见了HDMI Alt

点击上方“LiveVideoStack”关注我们▲扫描图中二维码或点击阅读原文▲了解音视频技术大会更多信息编者按:其实在未能推出配套线缆和适配器的那一刻,HDMI Alt模式就已经没有未来了。HDMI已全面落后DisplayPort。本文来自Arstechnica。文/Scharon Hardin…

【SpringCloud】Nacos的安装与启动

【SpringCloud】Nacos的安装与启动 一、下载安装包 二、解压 三、端口配置 四、启动 五、访问 【SpringCloud】Nacos的安装与启动 一、下载安装包 在Nacos的GitHub页面,提供有下载链接,可以下载编译好的Nacos服务端或者源代码: GitHu…

分享149个PHP源码,总有一款适合您

PHP源码 分享149个PHP源码,总有一款适合您 下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下..., 149个PHP源码下载链接:https://pan.baidu.com/s/1RKnEbbhpfUndnMrxG8rSIQ?pwd0nqp 提取码&#x…

LINUX学习之文本编辑器VIM/VI(八)

简介 VI 是 Unix 操作系统和类 Unix 操作系统中最通用的文本编辑器 VIM 编辑器是从 VI 发展出来的一个性能更强大的文本编辑器。可以主动的以字体颜色辨别语法的正确性,方便程序设计 VIM 与 VI 编辑器完全兼容 模式转换 如下图所示,一般模式下输入i、…

选出相似的文本按照相似度排序difflib.get_close_matches

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 选出相似的文本 按照相似度排序 difflib.get_close_matches 选择题 对于以下python代码表述错误的是? from difflib import get_close_matches myText"python" myList[&…

23种设计模式(十六)——备忘录模式【状态变化】

备忘录模式 文章目录 备忘录模式意图什么时候使用备忘录真实世界类比备忘录模式的实现备忘录模式的优缺点亦称:调解人、控制器、Intermediary、Controller、Mediator 意图 在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将这个对…

穿越万年的轮回[期望dp]

首先我们设置dpi,0/1,0/1dp_{i,0/1,0/1}dpi,0/1,0/1​表示经过iii次操作之后开头为red/edrred/edrred/edr,结尾为red/edrred/edrred/edr的串的期望redredred字符串个数。 然后我们考虑转移: 首先我们要来思考一下期望的本质,这样一个状态&…

「Python|VS Code」如何在VS Code中使用Jupyter Notebook运行Python代码

本文主要介绍如何在VS Code安装Jupyter Notebook的扩展并创建notebook文件,并在notebook中运行python代码。同时,介绍使用Jupyter notebook运行python代码的好处。 文章目录安装Jupyter notebook扩展并运行代码Jupyter notebook的好处安装Jupyter notebo…

第十章 STM32F103+ESP8266接入机智云 实现小型IOT智能家居项目

前言 最近有不少小伙伴私信留言,想要我推出一章能够通过APP进行远程控制并获取传感器信息的实验教程。说实话在嵌入式毕设里边,这算是中等偏上水平的了。刚好我也有兴趣写写。全篇4700多字,我写的很详细,按着文章一步一步操作即可…

RabbitMQ的基础学习(上)

前言: RabbitMQ是一个基于AMQP规范实现的消息队列。它具有性能好、高可用、跨平台性、社区活跃等优点,比较适合中小型公司使用。掌握RabbitMQ相关知识,对工作和学习都有帮助。下面我讲详细介绍一下Rabbit的相关知识。 正文: 一、…

【机器学习】缺失值的处理方法总结

目录:缺失值的处理一、总录二、引言三、数据缺失的原因四、数据缺失的类型五、数据缺失的处理方法5.1 删除记录5.2 数据填充5.2.1 替换缺失值5.2.2 拟合缺失值5.2.3 虚拟变量5.3 不处理六、实证演练七、小结一、总录 二、引言 业界广泛流传这样一句话:数…

java构造器2023021

构造器: 构造器是一个特殊的方法,用于创建实例时执行初始化。构造器是创建对象的重要途径(即使使用工厂模式、反射等方式创建对象,其实质依然是依赖于构造器),因此Java类必须包含一个或一个以上的构造器。 …