MySQL——源码安装教程

MySQL

  • 一、MySQL的安装
    • 1、RPM
    • 2、二进制
    • 3、源码
  • 二、源码安装方式
  • 三、安装过程
    • 1、上传源码包
    • 2、解压当前文件并安装更新依赖
    • 3、对MySQL进行编译安装
  • 四、其他步骤

一、MySQL的安装

首先这里我来介绍下MySQL的几种安装方式:
一共三种,RPM安装包、二进制包安装以及源码安装
当然,不同的安装方式也有优缺点,下面分别介绍下:

1、RPM

优点: 安装简单,适合初学者学习使用
缺点: 需要单独下载客户端和服务器;安装路径不灵活,默认路径不能修改,一台服务器只能安装一个版本的MySQL软件。
文件布局:

/usr/bin (客户端程序和脚本)
/usr/sbin (mysqld服务器)
/var/lib/mysql (日志文件和数据库)
/usr/share/man (Linux 文档页)
/usr/include/mysql (包含()文件)
/usr/lib/mysql (库文件)
/usr/share/mysql (错误信息和字符集文件)

2、二进制

优点: 安装简单;灵活性好;单台服务器可以安装多个版本的 MySQL 软件。
缺点: 已经经过编译,性能不如源码编译得好;不能灵活定制编译参数。
文件布局:

bin (客户端程序、mysqld服务器和实用程序)
docs (文档)
man (Linux 文档页)
include (包含()文件)
lib (库文件)
share (错误消息和字典、安装数据库的SQL文件)
support-files (其他支持文件)

3、源码

优点: 与平台无关,可按需定制编译,最灵活;性能最好;单台服务器可以安装多个版本的 MySQL 软件。
缺点: 安装过程较复杂;编译时间长
文件布局:

bin (客户端程序、mysqld服务器和实用程序)
docs (文档)
man (Linux 文档页)
include (包含()文件)
lib (库文件)
share (错误消息和字典、安装数据库的SQL文件)
support-files (其他支持文件)

这里如果想要使用RPM或者二进制安装方式,可以参考如下链接文章:https://blog.csdn.net/weixin_63172698/article/details/132559298?spm=1001.2014.3001.5501
二进制与源码的本质安装区别在于,源码安装多了:源代码程序编译参数配置、编译和安装二进制的过程,然而最耗时的就是这三步,下面我们来介绍源码安装方式。

二、源码安装方式

首先咱们介绍下源码安装方式与其他两种安装方式的区别,即为什么要使用源码安装方式?
按需定制编译,最灵活;性能最好,这三点是最重要的原因之一,以及可以安装到自己想要安装的目录、并且支持单台服务器安装多个版本的MySQL。
就比如官网直接下载下来的二进制安装包是按照一般情况下配置好了编译的默认参数,有些默认编译配置可能并不是想要的,这时就要在编译阶段按需自定义编译参数,制定符合自己需求的二进制MySQL安装包,如:只编译支持utf8mb4编码。
对于安装方式的选择:
这里不想安装最简单却不够灵活的RPM包,又不想暗黄复杂费时的源码包的情况下建议选择二进制安装。
当然对数据库性能要求高,同时能够灵活地定制编码参数选项地情况建议选择源码安装。

三、安装过程

首先我介绍下我目前演示地安装环境:
这里建议硬盘40G以上,运存4G,具体看自己电脑情况而定,20G大概率不够用。
在这里插入图片描述
在这里插入图片描述
首先,将Mysql对应版本的源码包下载下来:
在这里插入图片描述
网站地址:https://downloads.mysql.com/archives/community/
这里建议使用迅雷进行下载安装。

1、上传源码包

这里我使用的是termius远程连接工具,当然,这里也可以使用其他的,比如:xshell、moba等等,这里就不一一介绍了,主要是为了通过xftp将本机与虚拟机进行连接,然后实现文件的传输。
这里为termius上传文件过程:
首先更改路径找到自己的包
在这里插入图片描述
在这里插入图片描述
找到要进行文件传输的虚拟机进行建立连接:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里即可看到已经成功建立了连接。
在这里插入图片描述
在这里插入图片描述
这里等待下面进度条完成。
在这里插入图片描述
在这里插入图片描述
这里可以看到文件传输完毕。
当然使用别的远程连接工具进行文件传输的原理是一样的,同样是先使用xftp建立连接,这里就不具体细讲了。

2、解压当前文件并安装更新依赖

在这里插入图片描述
这里我们就可以看到已经上传好的文件。
接着我们进行解压文件:

[root@localhost src]# tar -zxvf mysql-boost-8.0.18.tar.gz

在这里插入图片描述
这里可以看到解压之后文件特别多:
在这里插入图片描述
接下来在进行编译之前我们首先下载它的依赖:

[root@localhost ~]# yum install -y cmake3 git gcc-c++ ncurses-devel perl-Data-Dumper boost boost-doc boost-devel bzip2 openssl-devel libtirpc-devel.x86_64

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
由于编译MySQL时对gcc的版本要求是5.3以上,所以我们需要先升级一下gcc的版本,因为yum安装目前最新版本只到4.8.5。
升级gcc版本的方式主要有两种,一种是下载源码包进行编译安装,一种是使用yum安装devtoolset包,目前devtoolset包里的gcc版本为5.3.1。
而源码安装的方式比较灵活可以选择任意版本,但非常耗时。这里两种方式都会介绍,可以自行视情况选择。这里我们即可看到:
在这里插入图片描述
这里使用源码进行安装gcc新版:
这里直接自带了gcc的9.2.0的源码包,所以直接用,如果没有自带,则自行进行下载:

wget http://ftp.gnu.org/gnu/gcc/gcc-9.1.0/gcc-9.1.0.tar.gz

如果自带了,直接进行解压即可:

[root@localhost /usr/local/src]# tar -xzvf gcc-9.1.0.tar.gz

在这里插入图片描述
在这里插入图片描述
这里即可看到源码解压完毕:
下一步我们进入解压后的目录,运行download_prerequisites脚本,该脚本会自动下载编译时所需要的依赖文件和库:

[root@localhost /usr/local/src]# cd gcc-9.2.0
[root@localhost /usr/local/src/gcc-9.2.0]# ./contrib/download_prerequisites

在这里插入图片描述
在这里插入图片描述
这里即可看到执行完毕。
接下来我们建立输出目录,将所有的中间文件都放到该目录下:

[root@localhost /usr/local/src/gcc-9.2.0]# mkdir gcc-build-9.2.0

下面我们进入新建的目录,并完成编译配置:

[root@localhost /usr/local/src/gcc-9.2.0]# cd gcc-build-9.2.0
[root@localhost /usr/local/src/gcc-9.2.0/gcc-build-9.2.0]# ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib

在这里插入图片描述
在这里插入图片描述
参数说明:

  • –enable-languages:让gcc支持哪些语言
  • –disable-multilib:不生成编译为其他平台可执行代码的交叉编译器
  • –disable-checking:生成的编译器在编译过程中不做额外检查,也可以使用–enable-checking=xxx来增加一些检查

下面进行接着就可以进行编译安装了:

[root@localhost /usr/local/src/gcc-9.2.0/gcc-build-9.2.0]# make && make install

这一步耗时会比较久,大概1-2个小时······
在这里插入图片描述
倒数第二步:创建软件链接,覆盖/usr/bin下的gcc相关命令,因为编译MySQL时默认会去/usr/bin目录下找gcc相关的命令:

[root@localhost ~]# ln -sf /usr/local/bin/* /usr/bin/

最后验证一下gcc版本是否为9.2.0,如下代表安装成功:

[root@localhost ~]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/9.1.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
Thread model: posix
gcc version 9.2.0 (GCC)
[root@localhost ~]#

在这里插入图片描述
到这一步其实mysql具体安装配置还没开始······

3、对MySQL进行编译安装

  • 1、进入解压后的目录,参照如下命令步骤完成编译安装:
# 创建数据文件存放目录
[root@localhost /usr/local/src]# mkdir -p /data/mysql
[root@localhost /usr/local/src]# cd mysql-8.0.18/

在这里插入图片描述

# 新建目录,存放编译产生的中间文件。因为不允许在源码目录下进行编译
[root@localhost /usr/local/src/mysql-8.0.18]# mkdir builder
[root@localhost /usr/local/src/mysql-8.0.18]# cd builder/
[root@localhost /usr/local/src/mysql-8.0.18/builder]# cmake3 ../ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DMYSQL_TCP_PORT=3306 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_DEBUG=0 -DMYSQL_MAINTAINER_MODE=0 -DWITH_SYSTEMD=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=../boost
[root@localhost /usr/local/src/mysql-8.0.18/builder]# make && make install

在这里插入图片描述
在这里插入图片描述
编译安装会比较耗时,大概1-2个小时······
在这里插入图片描述
cmake3命令所使用的参数说明:

  • -DCMAKE_INSTALL_PREFIX=/usr/local/mysql:MySQL安装的根目录
  • -DMYSQL_DATADIR=/data/mysql:数据文件所存放的目录
  • -DSYSCONFDIR=/etc :MySQL配置文件所在目录
  • -DMYSQL_USER=mysql:MySQL服务的用户名
  • -DWITH_MYISAM_STORAGE_ENGINE=1:安装MyISAM引擎
  • -DWITH_INNOBASE_STORAGE_ENGINE=1:安装InnoDB引擎
  • -DWITH_ARCHIVE_STORAGE_ENGINE=1:安装Archive引擎
  • -DWITH_MEMORY_STORAGE_ENGINE=1:安装Memory引擎
  • -DWITH_FEDERATED_STORAGE_ENGINE=1:安装Federated引擎
  • -DWITH_PARTITION_STORAGE_ENGINE=1:安装Partition引擎
  • -DWITH_READLINE=1:MySQL的readline library
  • -DMYSQL_UNIX_ADDR=/tmp/mysql.sock:sock文件的路径
  • -DMYSQL_TCP_PORT=3306 :MySQL的监听端口
  • -DENABLED_LOCAL_INFILE=1:启用加载本地数据
  • -DENABLE_DOWNLOADS=1:编译时允许自主下载相关文件
  • -DEXTRA_CHARSETS=all :使MySQL支持所有的扩展字符
  • -DDEFAULT_CHARSET=utf8mb4:设置默认字符集为utf8mb4
    -DDEFAULT_COLLATION=utf8mb4_general_ci:设置默认字符校对
  • -DWITH_DEBUG=0:禁用调试模式
  • -DMYSQL_MAINTAINER_MODE=0:是否启用mysql维护器特定的开发环境
  • -DDOWNLOAD_BOOST=1:允许在线更新boost库
  • -DWITH_BOOST=…/boost:指定boost安装路径

具体参考官方文档:
https://dev.mysql.com/doc/refman/8.0/en/source-configuration-options.html

  • 2、编译安装完成后,创建mysql用户及更改相应目录的属主:
[root@localhost ~]# groupadd mysql
[root@localhost ~]# useradd -M -g mysql -s /sbin/nologin mysql
[root@localhost ~]# chown -R mysql:mysql /usr/local/mysql/
[root@localhost ~]# chown -R mysql:mysql /data/mysql/
  • 3、编辑配置文件:
[root@localhost ~]# vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock[mysqld_safe]
log-error=/var/log/mysqld/mysqld.log
pid-file=/var/run/mysqld/mysql.pid
  • 4、创建日志文件存放的目录和pid文件存放的目录,并赋权给mysql用户:
[root@localhost ~]# mkdir -p /var/log/mysqld /var/run/mysqld
[root@localhost ~]# chown -R mysql:mysql /var/log/mysqld
[root@localhost ~]# chown -R mysql:mysql /var/run/mysqld
  • 5、配置环境变量,方便使用MySQL的命令:
[root@localhost ~]# vim /etc/profile
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin
[root@localhost ~]# source /etc/profile
[root@localhost ~]# mysql --version  # 验证配置是否成功
mysql  Ver 8.0.18 for Linux on x86_64 (Source distribution)
[root@localhost ~]#
  • 6、执行如下命令初始化数据库:
[root@localhost ~]# mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql

初始化成功后会生成root账户的默认密码。
将该密码复制并保存,因为后面需要使用该密码登录到MySQL中修改密码。

  • 7、将MySQL生成的启动文件复制到/usr/lib/systemd/system/目录下:
[root@localhost ~]# cp /usr/local/src/mysql-8.0.18/builder/scripts/mysqld.service /usr/lib/systemd/system/
[root@localhost ~]# chown 775 /usr/lib/systemd/system/mysqld.service
  • 8、查看3306端口是否已正常监听:
[root@localhost ~]# netstat -lntp |grep 3306
tcp6       0      0 :::33060                :::*                    LISTEN      27363/mysqld
tcp6       0      0 :::3306                 :::*                    LISTEN      27363/mysqld
[root@localhost ~]#
  • 9、使用默认密码登录MySQL,并重置密码及开放远程登录:
[root@localhost ~]# mysql -uroot -pmXyfy/g8\)aus
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';  # 重置密码
mysql> use mysql;
mysql> update user set host ='%' where user='root';  # 开放远程登录
mysql> FLUSH PRIVILEGES;  # 刷新修改

到这里,那么MySQL源码安装已经配置完毕即可使用。

四、其他步骤

  • 1、创建数据库school,字符集为utf8
  • 2、在school数据库中创建Student和Score表

在这里插入图片描述
在这里插入图片描述

  • 3、授权用户tom,密码Mysql@123,能够从任何地方登录并管理数据库school。
  • 4、使用mysql客户端登录服务器,重置root密码

这里我们需要使用MySQL命令客户端或图形化界面工具来完成,这里我们主要讲解SQL语句:

  • 1、创建数据库school并设置字符集为utf8
CREATE DATABASE school CHARACTER SET utf8;

在这里插入图片描述

  • 2、创建Students表
USE school;CREATE TABLE Student (Id INT(10) PRIMARY KEY AUTO_INCREMENT,Name VARCHAR(20) NOT NULL UNIQUE,Sex VARCHAR(4),Birth YEAR,Department VARCHAR(20),Address VARCHAR(50)
);

在这里插入图片描述
在这里插入图片描述

  • 3、创建Score表
CREATE TABLE Score (Id INT(10) PRIMARY KEY AUTO_INCREMENT,StuId INT(10) NOT NULL,CName VARCHAR(20),Grade INT(10)
);

在这里插入图片描述
这里查看下表结构:
在这里插入图片描述

  • 4、授权用户tom并设置密码Mysql@123,以允许从任何地方登录并管理数据库school;
CREATE USER 'tom'@'%' IDENTIFIED BY 'Mysql@123';
GRANT ALL PRIVILEGES ON school.* TO 'tom'@'%';
FLUSH PRIVILEGES;

在这里插入图片描述
这里授予tom用户对school数据库的所有权限,并设置允许从任何地方登录。

  • 5、使用mysql客户端登录服务器,重置root密码
    这里有多种方式重置用户密码,我仅展示在Linux环境下的mysql8.0.x重置密码方法:
    • 5.1 登录linux服务器,可以使用sudo的账号权限
    • 5.2 执行命令,修改mysql配置文件:
vim /etc/my.cnf
    • 5.3 打开后,添加skip-grant-tables:

在这里插入图片描述
在这里插入图片描述
skip-grant-tables #跳过授权表

    • 5.4 重启MySQL服务
      在这里插入图片描述
systemctl restart mysqld
    • 5.5 之后我们进入mysql里面,直接输入mysql回车就行
      在这里插入图片描述
mysql>use mysql;  
mysql>update user set authentication_string='ZY@123666' where user='root';
mysql>exit

在这里插入图片描述

    • 5.6 再次编辑mysql配置文件将添加的#skip-grant-tables #注释掉
      在这里插入图片描述
      在这里插入图片描述
    • 5.7 再次重启MySQL服务
systemctl restart mysqld

在这里插入图片描述
在这里插入图片描述
至此密码修改成功。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库第三次作业

1、使用源码安装MySQL8.0.x。 进入MySQL官方网站中下载适合你操作系统的源代码包MySQLhttps://www.mysql.com/复制下载链接,用wget命令安装。 [rootlocalhost ~]# wget https://repo.mysql.com//mysql80-community-release-el9-4.noarch.rpm [rootlocalhost ~]# r…

详解cv2.addWeighted函数【使用 OpenCV 添加(混合)两个图像-Python版本】

文章目录 简介函数原型代码示例参考资料 简介 有的时候我们需要将两张图片在alpha通道进行混合,比如深度学习数据集增强方式MixUp。OpenCV的addWeighted提供了相关操作,瓷片博客将详细介绍这个函数,并给出代码示例。🚀&#x1f6…

MTK6877/MT6877天玑900安卓5G核心板_安卓开发板主板定制开发

2021年5月13日,MediaTek 宣布发布旗下的天玑900系列芯片,又名MT6877。天玑900基于6nm先进工艺制造,搭载硬件级4K HDR视频录制引擎,支持1.08亿像素摄像头、5G双全网通和Wi-Fi 6连接、旗舰级存储规格和120Hz的FHD超高清分辨率显示&a…

华为汪涛:5.5G时代UBB目标网,跃升数字生产力

[阿联酋,迪拜,2023年10月12日] 在2023全球超宽带高峰论坛上,华为常务董事、ICT基础设施业务管理委员会主任汪涛发表了“5.5G时代UBB目标网,跃升数字生产力”的主题发言,分享了超宽带产业的最新思考与实践,探…

Spring实战 | Spring AOP核心功能分析之葵花宝典

国庆中秋特辑系列文章: 国庆中秋特辑(八)Spring Boot项目如何使用JPA 国庆中秋特辑(七)Java软件工程师常见20道编程面试题 国庆中秋特辑(六)大学生常见30道宝藏编程面试题 国庆中秋特辑&…

uniapp 一次性上传多条视频 u-upload accept=“video“ uni.chooseMedia uni.uploadFile

方式 一 部分安卓机 只能一条一条传视频 文档地址 uview 2.0 Upload 上传组件 html <view class"formupload"><u-upload accept"video":fileList"fileList3" afterRead"afterRead" delete"deletePic" name"…

[Swift]同一个工程管理多个Target

1.准备 先创建一个测试工程“ADemo”&#xff0c;右键其Target选择Duplicate&#xff0c;再复制一个Target为“ADemo2”。 再选择TARGETS下方的“”&#xff0c;添加一个APP到项目中&#xff0c;这个命名为“BDemo”。 2、管理多个Target 可以对三个target分别导入不同的框…

学信息系统项目管理师第4版系列26_项目绩效域(下)

1. 项目工作绩效域 1.1. 涉及项目工作相关的活动和职能 1.2. 预期目标 1.2.1. 高效且有效的项目绩效 1.2.2. 适合项目和环境的项目过程 1.2.3. 干系人适当的沟通和参与 1.2.4. 对实物资源进行了有效管理 1.2.5. 对采购进行了有效管理 1.2.6. 有效处理了变更 1.2.7. 通…

软件测试学习(四)自动测试和测试工具、缺陷轰炸、外包测试、计划测试工作、编写和跟踪测试用例

目录 自动测试和测试工具 工具和自动化的好处 测试工具 查看器和监视器 驱动程序 桩 压力和负载工具 干扰注入器和噪声发生器 分析工具 软件测试自动化 宏录制和回放 可编程的宏 完全可编程的自动测试工具 随机测试&#xff1a;猴子和大猩猩 使用测试工具和自动…

权限管理与jwt鉴权

权限管理与jwt鉴权 学习目标&#xff1a; 理解权限管理的需求以及设计思路实现角色分配和权限分配 理解常见的认证机制 能够使用JWT完成微服务Token签发与验证 权限管理 需求分析 完成权限&#xff08;菜单&#xff0c;按钮&#xff08;权限点&#xff09;&#xff0c;A…

TiDB 7.4 发版:正式兼容 MySQL 8.0

MySQL 是全球最受欢迎的开源数据库&#xff0c;长期位于 DB-Engines Ranking 排行榜第二名&#xff0c;在世界范围内拥有数量庞大的企业用户和开发者。然而&#xff0c;随着时间的推移&#xff0c;MySQL 用户正面临新挑战。Oracle 官宣将在 2023 年 10 月终止 MySQL 5.7 版本的…

LeetCode【739】每日温度

题目&#xff1a; 思路&#xff1a; https://www.bilibili.com/video/BV1PJ411H7P7/?spm_id_from333.337.search-card.all.click&vd_source2f682a60feabf0f730ad09e0f980ce83 单调栈 思考&#xff1a; 解决栈类问题&#xff0c;思考入栈&#xff0c;出栈条件&#xff1b;…

解决“413 Request Entity Too Large”错误 代表请求包太大,服务器拒绝响应

解决办法&#xff1a; 在nginx的配置文件nginx.conf中&#xff0c;添加这么一句client_max_body_size 1024m; 意思是最大请求是1024m。这个配置可以放到 http段 或者 server段 或者 location段。

链表(3):双链表

引入 我们之前学的单向链表有什么缺点呢&#xff1f; 缺点&#xff1a;后一个节点无法看到前一个节点的内容 那我们就多设置一个格子prev用来存放前面一个节点的地址&#xff0c;第一个节点的prev存最后一个节点的地址&#xff08;一般是null&#xff09; 这样一个无头双向…

关于智能控制领域中模糊控制算法的概述

智能控制领域中的模糊控制算法是一种基于模糊逻辑的控制策略&#xff0c;它通过对模糊集合的刻画来处理模糊信息&#xff0c;从而获得模糊输出并进行控制。模糊控制算法在实际控制工程中具有良好的应用前景&#xff0c;它不但具有较强的鲁棒性和适应性&#xff0c;而且可以为复…

【干货】VS2017简介、编译、启动单项目和启动多项目

1. VS2017简单介绍 解决方案和项目的区别&#xff1a; 一般一个解决方案会有多个项目&#xff0c;一个项目里面一般只有一个main文件&#xff0c;所以需要右键单击某个项目将其设置成启动项目&#xff0c;才可以启动该项目。 2. 编译github的代码仓 一般都会有CMakeLists.t…

Go函数介绍与一等公民

Go函数介绍与一等公民 函数对应的英文单词是 Function&#xff0c;Function 这个单词原本是功能、职责的意思。编程语言使用 Function 这个单词&#xff0c;表示将一个大问题分解后而形成的、若干具有特定功能或职责的小任务&#xff0c;可以说十分贴切。函数代表的小任务可以…

基于nodejs+vue校园失物招领平台设计与实现

科学技术日新月异的如今&#xff0c;计算机在生活各个领域都占有重要的作用&#xff0c;尤其在信息管理方面&#xff0c;在这样的大背景下&#xff0c;学习计算机知识不仅仅是为了掌握一种技能&#xff0c;更重要的是能够让它真正地使用到实目 录 摘 要 I ABSTRACT II 目 录 II…

用servlet实现一个简单的猜数字游戏。

需要两个页面&#xff0c;一个jsp页面&#xff08;guess.jsp&#xff09;和servlet页面&#xff08;servlet&#xff09;。 一.jsp页面 在jsp页面中需要实现&#xff1a; 1.创建随机数并且保存在session中。 2.做个form表单提交猜的数字给servlet页面。 <%page import&…

CakePHP 3.x/4.x反序列化RCE链

最近网上公开了cakephp一些反序列化链的细节&#xff0c;但是没有公开poc&#xff0c;并且网上关于cakephp的反序列化链比较少&#xff0c;于是自己跟一下 &#xff0c;构造pop链。 CakePHP简介 CakePHP是一个运用了诸如ActiveRecord、Association Data Mapping、Front Contr…