mysql如何通过源码安装_mysql源码编译步骤

来源:这里教程网 时间:2026-02-28 20:51:35 作者:

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
)。

相关推荐