mysql源码编译安装适用于需自定义配置、启用innodb等引擎、调试或部署于非标准系统场景;需准备gcc、cmake3、openssl等依赖,下载官方源码后用cmake配置并指定安装路径、字符集等选项,再make编译安装,最后初始化数据目录并设置服务。

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 命令。常用关键选项如下:
JTBC CMS(5.0) 是一款基于PHP和MySQL的内容管理系统原生全栈开发框架,开源协议为AGPLv3,没有任何附加条款。系统可以通过命令行一键安装,源码方面不基于任何第三方框架,不使用任何脚手架,仅依赖一些常见的第三方类库如图表组件等,您只需要了解最基本的前端知识就能很敏捷的进行二次开发,同时我们对于常见的前端功能做了Web Component方式的封装,即便是您仅了解HTML/CSS也
-
-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)。









