MySQL 8.0.x 在Linux下的源码构建与初始化(以CentOS + MySQL 8.0.22为例)
前言:由于项目实践需要,我不得不踏上源码编译MySQL的道路,虽然第一次做的时候见一个坑跳一个,但是在成功编译后,一股成就感涌上心头。这篇文章将分享我编译MySQL的步骤和经验,当然也会有持续更新的可能。
0. MySQL编译前置条件
0.0 更新包管理器
bash
yum update
0.1 查看当前是否运行MySQL实例并终止
bash
lsof -i:3306
# 或
/etc/init.d/mysqld status
# 或
systemctl mysqld status
killall mysqld
0.2 检测依赖项是否存在
bash
<executable>
# 或
<executable> -v
# 或
<executable> --version
0.3 需要安装的依赖项以及安装方法
cmake
bash
yum install -y cmake
git
bash
yum install -y git
make
bash
yum install -y make
openssl
bash
yum install -y openssl*
ncurses-devel
bash
yum install -y ncurses-devel
libtirpc
bash
yum install -y libtirpc libtirpc-devel
rpcgen
bash
yum install -y rpcgen
1. 下载并解压源码压缩包
由于编译MySQL需要Boost,因此我们直接下载带Boost的MySQL压缩包,然后将Boost放置在/usr/local
目录下。
bash
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-8.0.22.tar.gz
tar -zxvf mysql-boost-8.0.22.tar.gz
mv ./mysql-boost-8.0.22/boost /usr/bin
2. 编译MySQL
bash
cd mysql-boost-8.0.22
mkdir build
cd build
cmake .. \
[-DCMAKE_C_COMPILER=<gcc>] \ # C 编译器
[-DCMAKE_CXX_COMPILER=<g++>] \ # C++ 编译器
[-DBUILD_CONFIG=<mysql_release>] \ # 构建配置
[-DCMAKE_BUILD_TYPE=<Release>] \ # MySQL构建类型
[-DCMAKE_C_FLAGS=""] \ # 传递给 C 编译器的参数
[-DCMAKE_CXX_FLAGS=""] \ # 传递给 C++ 编译器的参数
[-DCMAKE_CXX_LINK_FLAGS=""] \ # 传递给 C++ 编译器连接的参数
[-DWITH_BOOST=<../boost>] # Boost安装路径
make && make install [-DESTDIR=$destdir] # 安装路径
3. 初始化MySQL
3.1 添加用户和组
bash
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
3.2 初始化MySQL实例
bash
cd $destdir/usr/local/mysql/
./bin/mysqld --initialize --user=mysql
# 这里会显示MySQL自动生成的密码$password, 需要记录
./bin/mysql_ssl_rsa_setup
启动并登陆MySQL服务
bash
./bin/mysqld_safe --user=mysql &
# 按下Enter
./bin/mysql -uroot -p"$password"
# 如果$password实在奇怪 可以不需要填写$password 按下enter后再输入密码
mysql>alter user 'root'@'localhost' identified by 'root';
Query OK, 0 rows affected (0.00 sec)