MySQL 通过源码编译安装,适合需要自定义配置、启用特定存储引擎(如 InnoDB)、调试源码或部署在非标准系统(如某些国产操作系统、旧版 Linux)的场景。相比二进制包或包管理器安装,编译安装更灵活,但对依赖和步骤要求更严格。
准备编译环境与依赖
确保系统已安装基础开发工具和 MySQL 编译所需库:
安装 GCC、CMake(MySQL 5.7+ 必须用 CMake,不再支持 autoconf)、make、bison、ncurses-devel 安装 OpenSSL 开发包(如 openssl-devel 或 libssl-dev),用于 SSL 支持 安装 zlib-devel、libaio-devel(InnoDB 和异步 I/O 所需) 确认 Python 2.7+(部分构建脚本依赖,MySQL 8.0+ 推荐 Python 3.6+)以 CentOS/RHEL 为例:
yum groupinstall "Development Tools"
yum install cmake3 openssl-devel zlib-devel libaio-devel ncurses-devel bison
注意:若系统自带 cmake 版本过低(如
下载并解压 MySQL 源码
从 MySQL 官网 Source Code 页面 下载对应版本的 tar.gz 源码包(如
mysql-8.0.33.tar.gz),避免使用 GitHub 镜像仓(可能缺少构建脚本或补丁)。
解压后进入目录:
tar -xzf mysql-8.0.33.tar.gz
cd mysql-8.0.33
源码根目录下应包含
CMakeLists.txt,这是 CMake 构建入口。
配置 CMake 编译选项
在源码目录中新建 build 子目录(推荐,避免污染源码树),然后运行 cmake 命令。常用关键选项如下:
-DCMAKE_INSTALL_PREFIX:指定安装路径,如/usr/local/mysql-DMYSQL_DATADIR:数据目录,如
/usr/local/mysql/data-DSYSCONFDIR:配置文件路径,如
/etc(my.cnf 将放此处) -DDEFAULT_CHARSET 和 -DDEFAULT_COLLATION:默认字符集与校验规则,如
utf8mb4/
utf8mb4_0900_ai_ci-DWITH_SSL:SSL 支持方式,可选
system(用系统 OpenSSL)、
bundled(自带 yaSSL 或 OpenSSL) -DWITH_INNOBASE_STORAGE_ENGINE=ON:启用 InnoDB(默认开启,显式声明更稳妥) -DENABLED_LOCAL_INFILE=ON:允许 LOAD DATA LOCAL INFILE(生产环境慎用)
示例命令:
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_0900_ai_ci \
-DWITH_SSL=system \
-DWITH_INNOBASE_STORAGE_ENGINE=ON
编译与安装
配置成功后执行编译和安装:
运行 make -j$(nproc) 加速编译(-j后数字为 CPU 核心数) 编译完成后,执行 make install 将文件复制到
CMAKE_INSTALL_PREFIX指定路径 初始化数据目录:
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
注意记录输出末尾生成的临时 root 密码 安装系统服务(可选):
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
并修改脚本中的
basedir和
datadir路径匹配实际位置
启动前确保
mysql用户存在,数据目录权限正确(
chown -R mysql:mysql /usr/local/mysql/data)。
