安装mysql源码包需先准备环境,包括gcc、CMake等工具和依赖库;接着下载包含Boost的MySQL源码包并解压;创建build目录后使用CMake配置安装路径、数据目录、字符集及InnoDB支持等参数;随后执行make编译并安装至指定目录;安装后添加mysql用户,初始化数据目录并记录临时密码;配置启动脚本以便通过systemctl管理服务,设置环境变量使命令全局可用;最后运行安全脚本修改root密码、删除匿名用户完成初始化。该方式耗时但灵活,适合定制化需求与学习研究。

安装 MySQL 源码包需要手动编译,适用于希望自定义功能或学习 MySQL 内部机制的用户。整个过程包括准备环境、获取源码、配置编译选项、编译和安装等步骤。
1. 准备编译环境
在开始前,确保系统中已安装必要的开发工具和依赖库:
- gcc/g++ 编译器
 - CMake(MySQL 使用 CMake 构建系统)
 - ncurses-devel(用于命令行客户端界面)
 - libaio-devel(异步 I/O 支持)
 - openssl-devel(ssl 支持)
 - make 工具
 
以 centos/RHEL 系统为例,运行以下命令安装依赖:
2. 下载 MySQL 源码包
从 MySQL 官方网站 或 gitHub 获取源码压缩包。推荐使用稳定版本,例如 MySQL 8.0:
- 官网地址:https://www.php.cn/link/06d86297d6e28d4637d60c86c2a2f5b6
 - 选择 “Source Code” 版本,如 
mysql-boost-8.0.xx.tar.gz(包含 Boost 库,必需) 
使用 wget 下载:
wget https://cdn.mysql.com/Downloads/MySQL-8.0/mysql-boost-8.0.36.tar.gz tar -zxvf mysql-boost-8.0.36.tar.gz cd mysql-8.0.36
3. 配置编译参数
在源码目录中创建构建目录并进入:
mkdir build && cd build
运行 CMake 配置,常用参数如下:
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_BOOST=../boost -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_unicode_ci -DENABLED_LOCAL_INFILE=ON -DWITH_INNOBASE_STORAGE_ENGINE=1
说明:
-  
CMAKE_INSTALL_PREFIX:指定安装路径 -  
WITH_BOOST:指向源码中的 boost 目录 - 启用 InnoDB 和本地文件导入支持
 
若配置失败,检查错误提示,常见问题是缺少依赖或路径错误。
4. 编译与安装
执行编译(根据 CPU 核心数调整 -j 参数提升速度):
make -j$(nproc)
编译完成后安装:
make install
安装完成后,MySQL 文件将位于 /usr/local/mysql 目录下。
5. 初始化数据库
添加 mysql 用户和组:
groupadd mysql useradd -r -g mysql -s /bin/false mysql
初始化数据目录:
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
记录输出中的临时 root 密码。
6. 配置启动脚本
复制服务文件以便使用 systemctl 管理:
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld chkconfig --add mysqld systemctl start mysqld systemctl enable mysqld
设置环境变量:
echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile source /etc/profile
7. 安全设置
运行安全脚本修改 root 密码并移除匿名用户:
/usr/local/mysql/bin/mysql_secure_installation
之后即可用 mysql -u root -p 登录使用。
基本上就这些。编译安装耗时较长,但灵活性高,适合特定需求场景。


