Debian 11 编译安装mysql 8.0.34

Linux · 2023-07-23
Debian 11 编译安装mysql 8.0.34
主机配置建议在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编译安装成功

编译安装
Theme Jasmine by Kent Liao