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

2次阅读

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

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

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

    并修改脚本中的 basedirdatadir 路径匹配实际位置

启动前确保 mysql 用户存在,数据目录权限正确(chown -R mysql:mysql /usr/local/mysql/data)。

text=ZqhQzanResources