引言

如果已经搭建过,有信心的,可以直接看这个,不用看下面啦

# 安装依赖
sudo yum -y install cmake gcc g++ ncurses-devel libtirpc-devel rpcgen libxml2-devel sqlite-devel libpng-devel oniguruma-devel wget pcre-devel vim

# 下载文件
wget https://dev.mysql.com/get/Downloads/MySQL-8.2/mysql-boost-8.2.0.tar.gz

# 解压文件
tar -zxvf mysql-boost-8.2.0.tar.gz

# 进入编译目录
cd mysql-8.2.0
mkdir myMakeDir
cd myMakeDir

# 预编译
cmake .. \
-DCMAKE_INSTALL_PREFIX=你的MySQL安装目录 \
-DMYSQL_DATADIR=你的MySQL数据目录 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DMYSQL_TCP_PORT=你的MySQL端口 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_BOOST=你的MySQL依赖boost的路径

下面文件目录是我自己的目录,你们可以改成自己想要的

如果你的服务器配置不行,或者编译缓慢,建议先交换内存再预编译,我就是编译到48%卡死不动了

# 获取要增加的4G的SWAP文件块
sudo dd if=/dev/zero of=/server/data/swapfile bs=1k count=4096000
# 给这个文件赋权(root账号所有的情况下,600权限,比较安全)
sudo chmod -R 600 /server/data/swapfile
# 创建SWAP文件
sudo mkswap /server/data/swapfile
# 激活SWAP文件
sudo swapon /server/data/swapfile

# 查看交换内存情况
sudo swapon -s
# 或可以用 sudo swapon --show 命令查看

下载源码包

1. 下载

进入甲骨文的MySQL官网下载:https://www.mysql.com/downloads/,选择Community社区版下载

MySQL官网下载页面

选择社区服务器MySQL Community Server

选择mysql版本

选择General标准的,不要选旧的版本

Select Version选择最新版就行

Select Operating System选择SourceCode

Select OS Version选择通用的源码包,其他的是红帽或者乌班图之类的

最后选择带boost的那一个,保存下面的md5,点击右侧的Download按钮

下载对应MySQL版本

这里可以直接点击下载,然后上传到服务器,这个速度可能快一点

也可以右键后复制链接,然后直接在服务器下载,这个的步骤少一点

mysql下载

我这里选择的是8.2.0版本,直接在服务器下载

wget https://dev.mysql.com/get/Downloads/MySQL-8.2/mysql-boost-8.2.0.tar.gz

2. 解压源码包

可以通过命令校验下载下来的文件包是否被人篡改过,8.2.5的md5是704ad9fb4779e76ce5e327285813c97c,改成你版本的md5

md5sum mysql-boost-8.2.0.tar.gz | grep 704ad9fb4779e76ce5e327285813c97c

检验安装包

然后解压安装包

tar -zxvf mysql-boost-8.2.0.tar.gz

编译安装

1. 编译前配置

在预编译之前先安装依赖,以免出现问题浪费大量时间

sudo yum -y install cmake gcc g++ ncurses-devel libtirpc-devel rpcgen

解压好后先创建目录

# 服务文件存放位置
mkdir -p /server/mysql/8.2.0/
# 数据文件存放位置
mkdir -p /server/data/mysql8.2.0/
# boost文件存放位置
mkdir -p /server/plugins/boost/boost_1_77_0/

我在安装的时候出现了这个报错,原因是没有安装这个boost,这里我们先安装,以防浪费时间

缺少boost

wget https://boostorg.jfrog.io/artifactory/main/release/1.77.0/source/boost_1_77_0.tar.bz2

然后解压这个源码包,注意这个是bz2文件,使用-jxvf进行解压

tar -jxvf boost_1_77_0.tar.bz2

把解压后的·文件移动到之前创建的boost文件存放目录

mv /server/sourceCode/boost_1_77_0/* /server/plugins/boost/boost_1_77_0/

最好在MySQL源码包内加一个目录,防止编译失败的时候方便清除预编译的结果,再次重新开始

mkdir myMakeDir
cd myMakeDir

创建好后进入这个目录

2. 开始预编译

输入命令

cmake .. \
-DCMAKE_INSTALL_PREFIX=/server/mysql/8.2.0 \
-DMYSQL_DATADIR=/server/data/mysql8.2.0 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_USER=自定义_mysql \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_BOOST=/server/plugins/boost/boost_1_77_0

如果你预编译失败,记得清除之前编译生成的文件,路径更换成你的路径

rm -rf /server/sourceCode/mysql-8.2.0/myMakeDir/*

出现这个就说明成功啦

mysql预编译成功

3. 开始编译

如果你服务器配置不高,编译之前,建议先交换内容,以防编译时卡死,MySQL编译是需要好几个小时的

# 获取要增加的4G的SWAP文件块
sudo dd if=/dev/zero of=/server/data/swapfile bs=1k count=4096000
# 给这个文件赋权(root账号所有的情况下,600权限,比较安全)
sudo chmod -R 600 /server/data/swapfile
# 创建SWAP文件
sudo mkswap /server/data/swapfile
# 激活SWAP文件
sudo swapon /server/data/swapfile

# 查看交换内存情况
sudo swapon -s
# 或可以用 sudo swapon --show 命令查看

输入命令开始编译

make

如果中途中断或者报错后,先清除编译再重新开始编译

make clean

看到这个就恭喜你编译成功了

MySQL编译成功

4. 开始安装

make install

MySQL安装完成

安装成功后查看目录是否有文件

mysql安装目录

到此MySQL已经安装好了

配置与启动

1. 初始化MySQL

进入安装目录

cd /server/mysql/8.2.0/bin

使用命令初始化

./mysqld --initialize-insecure --character-set-server=utf8mb4
  1. 这个是执行mysqld的脚本,这个脚本是MySQL的服务程序
  2. --initialize-insecure表示用空密码进行root账号的初始,也可以使用--initialize参数,这个会产生一个随机临时密码,这个密码必须要保存,不然你MySQL服务进不去,只能重新初始化
  3. --character-set-server=utf8mb4代表指定字符集,这种字符集是MySQL推荐使用的
  4. 还可以使用--defaults-file参数进行指定配置文件所在位置,这个参数要放在最前面,还支持一个--user=mysql的方式指定启动账号,这个需要root权限

MySQL初始化成功

看到这个就说明初始化成功了,如果需要重新初始化,请先删除数据目录的数据或者指定新的数据目录

2. 启动服务

使用命令启动

./mysqld --character-set-server=utf8mb4

此时你这个命令行应该是被占用了,打开另一个终端,输入命令查看进程

ps -aux | grep mysqld

请输入图片描述

还可以查看端口号

netstat -anp | grep mysql

发现这种新版MySQL,监测了2个端口,分别是330633060端口

使用命令杀掉服务

kill 进程号

然后发现刚刚那个被占用的命令行就停止了,原本Ctrl + C都停不下来的MySQL也没了,查看进程信息和端口占用也没有了

正式挂起常驻服务

./mysqld --character-set-server=utf8mb4 &

这时候虽然会有打印,但命令行不会一直占用了

3. 连接MySQL服务

还是在MySQL安装目录的bin目录下,如果你上面初始化的时候用的是--initialize-insecure参数,使用这个连接

./mysql -u root --skip-password

如果你用的是--initialize参数初始化,使用这个命令连接

./bin/mysql -uroot -p

点击回车输入初始化时保存的默认密码,如果忘记密码,请百度看看能不能找回,不然只能重新初始化MySQL

进入MySQL服务

看到这个就代表成功进入了

4. 修改密码

进入服务后先修改密码

# 修改新密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '你root账号的新密码';
# 刷新写入磁盘
flush privileges;

至此,MySQL服务已经安装好了

更多的内容,可以参考MySQL官方文档:https://dev.mysql.com/doc/refman/8.4/en/data-directory-initialization.html

好啦

Goodbye~

最后修改:2024 年 09 月 16 日
如果觉得我的文章对你有用,请随意赞赏