• linux上redis升级


    linux上redis升级

    最近接受到一个漏洞的处理,主要是:Redis 整数溢出漏洞(CVE-2021-32762),这里大概了解一下情况,解决方式就是升级redis 版本。

    漏洞:Redis 整数溢出漏洞(CVE-2021-32762)

    处理:将 Redis 升级到 5.0.14、6.0.16、6.2.6 及以上版本,下载地址:https://redis.io/download/

    我原本的redis 版本是6.2.1,现在就对他做一下升级处理。

    1、下载redis 源码包:

    redis 下载地址 根据下载地址选择自己要安装的redis 版本的源码包。这里我下载的是 redis-6.2.6.tar.gz。

    这里你可以先下载到本地,在通过ftp 的方式上传到服务器,也可以直接 wget 下载。

    #安装 wget
    yum install -y wget
    
    #下载 redis
    wget http://download.redis.io/releases/redis-6.2.6.tar.gz
    
    #解压源码包
    tar -zxvf redis-6.2.6.tar.gz
    
    #停止旧版的redis
    ps -ef|grep redis
    kill -9 进程id
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    2、备份数据:

    在升级前,可以根据情况来决定是否需要备份数据和配置文件。

    • 如果持久化用的是rdb,备份.rdb文件,默认叫 dump.rdb。
    • 如果持久化用的是aof,备份.aof文件,默认叫 appendonly.aof
    • 配置文件是 redis.conf文件。也可以备份下,这样可以省去修改配置文件。

    在启动新版的redis 时,可以将数据文件放到启动目录下。不知道启动目录,可以 redis-cli 下输入:config get dir 查看。

    redis.conf 只需要替换新版的redis.conf 即可。

    3、编译安装:

    • 在编译安装前,查看下gcc 的版本:
    #查看gcc 版本
    gcc -v
    #如果是4.* 的就要升级,因为redis6.2 以上需要gcc 9.*的版本,不然make 编译redis时会报错。
    #安装gcc
    yum -y install gcc
    #升级gcc
    yum -y install centos-release-scl
    yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
    
    #切换到升级的gcc 版本
    #临时)
    scl enable devtoolset-9 bash
    #永久)
    echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile
    
    #查看版本是否切换成功:
    gcc -v              #如果gcc版本为9.*以上则成功,4.*反之
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 进入新版的redis 目录编译安装
    cd redis-6.2.6
    #编译安装
    make && make install
    
    #将旧版的配置文件和备份数据文件复制到新版redis 中
    cp -p redis-6.2.1/redis.conf ./redis-6.2.6/
    cp -p redis-6.2.1/dump.rdb ./redis-6.2.6/src/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    因为这里是使用旧版的redis.conf ,所以可以不用配置redis.conf 文件的参数,如果没有使用旧版的话,可以配置以下参数:

    1. 注释 bind 127.0.01 允许外部连接
    2. 修改protected-mode 为 no 关闭保护模式
    3. 修改daemonize 为 yes 允许后台运行
    4. port 端口,可以根据需求修改,比如修改成:16379
    5. requirepass 可以设置密码,将注释去掉
    #这个也可以在redis 中设置密码:
    127.0.0.1:6379> config set requirepass 123123
    127.0.0.1:6379> config get requirepass
    
    • 1
    • 2
    • 3

    4、启动新版redis

    cd redis-6.2.6/src
    ./redis-server /root/redis-6.2.6/redis.conf
    #查看redis 是否启动
    ps -ef |grep redis
    
    #查看redis 版本
    #可以直接看
    redis-cli -v
    
    #也可以进redis 中查看
    redis-cli -h localhost -p 16379 -a 123123
    info
    #这里连接时可以直接输入密码,也可以连接后输入密码
    127.0.0.1:6379> auth 123123
    127.0.0.1:6379> info
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    redis-cli -h 192.168.111.100 -p 6379 -a 123123 -n 数据库序号(0-15)
    -h:指定远程主机地址
    -p:指定redis服务端口
    -a:指定密码,未设置数据库密码可以省略-a选项
    -n:指定数据库序号,默认是序号0,redis有16个库(0-15)

    若不添加任何选型表示,则使用127.0.0.1:6379 连接本机上的redis 数据库

  • 相关阅读:
    @RequestBody 和 @RequestParam注解使用详解
    星起航:亚马逊助力卖家建设品牌形象,形成品牌效应促稳步增长
    Java中的方法递归(套娃检索)
    2023年中国石英矿资源现状及行业市场供需分析[图]
    Boot 中bean配置覆盖
    基于go-micro微服务的实战-Gateway网关层的限流降级(八)
    vueday02——使用NTableData
    1057 Stack
    Innodb 行锁实现原理
    Java反射获取内部类方法
  • 原文地址:https://blog.csdn.net/weixin_53060366/article/details/125866157