主机配置建议在2c2g以上
1.安装各种依赖
apt install build-essential cmake pkg-config libssl1.1 libssl-dev libncurses5-dev libncursesw5-dev -y
2.下载源码
wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-boost-8.0.34.tar.gz
如需安装其他版本可以在官方下载页找 https://downloads.mysql.com/archives/community/
3.解压源码包
tar -xzvf mysql-boost-8.0.34.tar.gz
4.进入源码目录
cd /mysql-8.0.34/
5.创建build目录并进入
mkdir build && cd build
在编译MySQL时创建build目录有以下好处: 1.通过隔离源代码和编译输出,保持项目的组织结构清晰,便于清理和卸载生成的文件,同时支持多个构建配置。 2.防止对源代码的污染,将编译过程中生成的临时文件和对象文件与源代码分开。 3.增强构建的可移植性,可以将build目录移动到其他计算机或目录而不影响构建结果。
6.使用CMake构建MySQL
cmake -DWITH_BOOST=../boost/boost_1_77_0/ -DWITH_SYSTEMD=1 -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ ..
-DWITH_BOOST=../boost/boost_1_77_0/:这个选项指定MySQL在构建过程中需要使用Boost库的路径。Boost是一个流行的C++库集合,MySQL可能依赖于其中的一些组件来提供额外的功能。
-DWITH_SYSTEMD=1:这个选项指示MySQL启用对Systemd的支持。Systemd是一种Linux系统的初始化系统和服务管理器。启用此选项将使MySQL与Systemd集成,以便在系统启动时自动启动MySQL服务器。
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql/:这个选项指定MySQL安装的目标路径。在构建完成后,MySQL的二进制文件、库文件和其他资源将被安装到/usr/local/mysql/目录中。这是MySQL的安装根目录。
..:这个参数指定CMake查找CMakeLists.txt的路径。在上述命令中,它表示CMake应该在当前目录的上一级目录中查找CMakeLists.txt文件,以进行MySQL的配置和构建。
7.编译安装
make -j$(nproc)&& make install
注意:机器内存至少要2GB,内存不足会导致编译进程被杀死; MySQL的编译可能需要相当长的一段时间,特别是在资源有限的计算机上或使用低性能虚拟机时。在这种情况下,screen允许在编译过程中断开SSH连接,并在需要时重新连接到screen会话,从而确保编译过程能够持续进行
apt install screen -y screen -S mysql make -j$(nproc)&& make install
恢复screen会话: screen -r mysql
8.将MySQL的安装目录添加到PATH环境变量中
echo "export PATH=/usr/local/mysql/bin:$PATH" >> ~/.bashrc
source ~/.bashrc
9.创建mysql用户
useradd -r -s /bin/false mysql
10.非安全模式初始化:不生成默认root密码,即root密码为空
mysqld --initialize --initialize-insecure --user=mysql
11.确保MySQL的安装目录和数据目录具有适当的所有权和权限
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql/data
chmod 750 /usr/local/mysql/bin/mysqld
chmod 750 /usr/local/mysql
chmod 750 /usr/local/mysql/data
12.MySQL配置文件
cat << EOF > /etc/my.cnf
[mysqld]
bind-address=127.0.0.1
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data/
socket=/usr/local/mysql/mysql.sock
pid-file=/usr/local/mysql/mysqld.pid
default-storage-engine=INNODB
max_connections=200
max_allowed_packet=16M
[mysql]
port=3306
socket=/usr/local/mysql/mysql.sock
[client]
port=3306
socket=/usr/local/mysql/mysql.sock
EOF
这段文本创建了一个包含MySQL配置选项的配置文件/etc/my.cnf,其中指定了MySQL服务器和客户端的相关设置。该文件用于在启动MySQL时加载配置,并确保MySQL按照指定的参数运行。
13.登录mysql,设置root密码
use mysql;
flush privileges;
alter user 'root'@'localhost' identified by '你的密码';
flush privileges;
至此,mysql编译安装成功