mysql手工注入
SQL注入实战说明:下面的URL为了让读者可以看清,所以没有进行URL的base64加密,但是读者在执行前需要对其进行base64加密,之后才可以正常执行!本次靶场操作以个人的实验环境为例。首先从我实...
2024.11.15实验拓扑:192.168.80.181 mariadb主服务器
192.168.80.182 mariadb 主服务器
192.168.80.185 mmm监视器monitor
192.168.80.189 mariadb从服务器
192.168.80.190 mariadb从服务器
1.基础环境搭建
所有主机都需要联网,并配置阿里云源,然后安装epel-release源
yum install -y wget
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo //修改yum仓库源为阿里云源
yum -y install epel-release //加载epel源
yum clean all && yum makecache //清理缓存并加载元数据缓存
yum -y install mariadb-server mariadb //安装mariadb
service firewalld stop
setenforce 0
systemctl start mariadb //启动mariadb
vi /etc/my.cnf //配置m1的配置文件,然后复制到其他服务器上,注意服务器Id
[mysqld]
log_error=/var/lib/mysql/mysql.err //错误日志
log=/var/lib/mysql/mysql_log.log
log_slow_queries=/var/lib/mysql_slow_queris.log //慢查询日志
binlog-ignore-db=mysql,information_schema //不需要同步的数据库名称
character_set_server=utf8 //编码
log_bin=mysql_bin //开启二进制日志用于主从数据复制
server_id=1 //服务器ID,不能一样
log_slave_updates //此数据库宕机,备用数据库接管
sync_binlog=1
auto_increment_increment=2 //字段一次递增多少
auto_increment_offset=1 //自增字段的起始值:1.3.5.7等奇数id
service mariadb restart
netstat -anpt | grep 3306 //检查是否启动
2. 配置主主同步
mysql //登录
MariaDB [(none)]> show master status; //在两台主服务器上查看bin日志起始位置和position起始位置
MariaDB [(none)]> grant replication slave on *.* to ‘replication‘@‘192.168.80.%‘ identified by ‘123456‘; //两台主都执行,为对方的同步用户授权
MariaDB [(none)]> change master to master_host=‘192.168.80.182‘,master_user=‘replication‘,master_password=‘123456‘,master_log_file=‘mysql_bin.000002‘,master_log_pos=410;
//填写自己同步账号的参数,注意bin日志编号和pos的值,不能填错。这句在m1上执行
MariaDB [(none)]> change master to master_host=‘192.168.80.181‘,master_user=‘replication‘,master_password=‘123456‘,master_log_file=‘mysql_bin.000002‘,master_log_pos=245; //这句在m2上执行
MariaDB [(none)]> start slave; //打开同步
MariaDB [(none)]> show slave status \G //查看同步状态,以下两个值为yes则成功,两台都要检查
下面建库进行测试,m1上新建数据库dba
m2上查看数据库,发现也有dba
在m1上将dba删除
m2上查看dba也消失了
主主同步配置成功。
主从同步配置
MariaDB [(none)]> change master to master_host=‘192.168.80.181‘,master_user=‘replication‘,master_password=‘123456‘,master_log_file=‘mysql_bin.000002‘,master_log_pos=1432;
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status \G
以上在两台从服务器上操作即可
3. 配置MMM
yum -y install mysql-mmm* //5台主机上都要安装
[root@ab ~]# cd /etc/mysql-mmm/
[root@ab mysql-mmm]# vi mmm_common.conf //修改mmm配置文件,配置一台,其他的直接复制,修改如下。
cluster_interface ens33
pid_path /run/mysql-mmm-agent.pid
bin_path /usr/libexec/mysql-mmm/
replication_user replication
replication_password 123456
agent_user mmm_agent //用户代理端
agent_password 123456
ip 192.168.80.181
mode master
peer db2
ip 192.168.80.182
mode master
peer db1
ip 192.168.80.189
mode slave
ip 192.168.80.190
mode slave
hosts db1, db2
ips 192.168.80.199
mode exclusive
hosts db3, db4
ips 192.168.80.200, 192.168.80.201
mode balanced
将配置文件拷贝给其他主机
scp mmm_common.conf root@192.168.80.182:/etc/mysql-mmm/
scp mmm_common.conf root@192.168.80.185:/etc/mysql-mmm/
scp mmm_common.conf root@192.168.80.189:/etc/mysql-mmm/
scp mmm_common.conf root@192.168.80.190:/etc/mysql-mmm/
下面要在所有的数据库里为监视器用户授权,并且为代理用户mmm_agent授权
MariaDB [(none)]> grant super, replication client, process on *.* to ‘mmm_agent‘@‘192.168.80.%‘ identified by ‘123456‘; //代理用户授权
MariaDB [(none)]> grant replication client on *.* to ‘mmm_monitor‘@‘192.168.80.%‘ identified by ‘123456‘; //监视器用户授权
MariaDB [(none)]> flush privileges;
下面按照mmm_common.conf 配置文件中的数据库角色划分配置mmm_agent.conf文件
[root@ab mysql-mmm]# vi /etc/mysql-mmm/mmm_agent.conf
this db1 //根据规划进行逐一调整,181为db1,182为db2,189为db3,190为db4
systemctl start mysql-mmm-agent
systemctl enable mysql-mmm-agent //在所有数据库服务器上启动mysql-mmm-agent
MMM的架构身份配置结束,下面对架构的监视器monitor进行配置80.185
[root@www.mysql.com ~]#cd /etc/mysql-mmm/
[root@www.mysql.com mysql-mmm]#ls
mmm_agent.conf mmm_common.conf mmm_mon.conf mmm_mon_log.conf mmm_tools.conf
[root@www.mysql.com mysql-mmm]#vi mmm_mon.conf //修改监视器的监视用户密码
ping_ips 192.168.80.181,192.168.80.182,192.168.80.189,192.168.80.190 //数据库服务器地址
auto_set_online 5 //使被监视的服务器转为online的时间
monitor_user mmm_monitor
monitor_password 123456
[root@www.mysql.com mysql-mmm]#systemctl start mysql-mmm-monitor //启动监视端
[root@www.mysql.com mysql-mmm]#mmm_control show //查看各节点的情况
[root@www.mysql.com mysql-mmm]#mmm_control checks all //校对mmm,需要都为OK
故障测试
将m1数据库停止,查看漂移地址情况
[root@ab mysql-mmm]# service mariadb stop //将m1数据库停止
[root@www.mysql.com mysql-mmm]#mmm_control show
主服务器地址漂移了,注意:再次启动m1不会抢占
将m3从服务器停止,查看漂移地址情况
漂移地址都到了m4身上
在这个架构中要注意的是主从同步,从服务器只能跟m1进行主从同步,m2只是跟m1进行主主同步做备份用的,假如m1挂了,两台从服务器不能从m2上同步内容,必须将m1重启才行。
在m1服务器上为监控机地址授权登录
grant all on *.* to ‘testdba‘@‘192.168.80.%‘ identified by ‘123456‘;
flush privileges; //授权testdba用户在80.0网段可以登录管理数据库所有内容,密码123456
下面在监控服务器上安装mariadb,并且登录主服务器漂移地址
[root@www.mysql.com ~]#yum install mariadb -y
[root@www.mysql.com ~]#mysql -utestdba -p -h 192.168.80.199
下面创建一个数据库测试
在m2上查看
在从服务器上查看
同步成功
SQL注入实战说明:下面的URL为了让读者可以看清,所以没有进行URL的base64加密,但是读者在执行前需要对其进行base64加密,之后才可以正常执行!本次靶场操作以个人的实验环境为例。首先从我实...
2024.11.15数据库多版本读场景我们看下上面这个数据库日常操作的例子。session 1修改了一条记录,没有提交;与此同时,session 2 来查询这条记录,这时候返回记录应该是多少呢?session 1 提交之...
2024.11.12一、初识报错注入C站老规矩:先说是什么,再说为什么。这是一个测试网站(SQLi Labs靶场的第一关),功能很简单:在地址栏输入用户id,页面返回对应的用户信息。比如,地址栏输入 ?id=1,页面返回...
2024.11.12之前开发发起建表申请时,有时会创建复合索引,可是应用上线之后,数据库监控到很多慢sql,和开发一沟通,开发觉得写的sql应该走创建的复合索引呀,可是为什么不走呢?原来是开发人员没有理解Mysql复合索...
2024.11.15一步一步推导出 Mysql 索引的底层数据结构。Mysql 作为互联网中非常热门的数据库,其底层的存储引擎和数据检索引擎的设计非常重要,尤其是 Mysql 数据的存储形式以及索引的设计,决定了 Mys...
2024.11.10