在生产环境中,很多开发者习惯通过系统包管理器直接安装MySQL,但遇到特定版本需求、定制插件或追求极致性能时,源码编译安装依然是最稳妥的选择。MySQL 5.7作为企业级长期稳定版,其源码安装流程相对固定,只要按步骤操作,就能避开大部分常见坑点。下面这份教程会带你从零开始完成环境准备、编译配置到服务启动的全过程。
准备编译环境与依赖库
源码编译对系统环境有一定硬性要求。首先确保你的Linux系统是CentOS 7或Ubuntu 18及以上版本。打开终端后,先同步软件源,然后安装编译所需的工具链和基础开发库。以CentOS为例,执行yum install gcc gcc-c++ cmake ncurses-devel openssl-devel bison libgcrypt-devel -y。如果使用的是Ubuntu,对应的命令是apt update && apt install build-essential cmake libncurses5-dev libssl-dev bison -y。这一步非常关键,缺少任何依赖都会在后续配置阶段直接报错,建议一次性装齐后再继续下一步。
下载并解压源码包
前往MySQL官方归档页面,找到5.7分支的最新补丁包,通常后缀为tar.gz。使用wget命令将其下载到服务器的指定工作目录,例如/usr/local/src。下载完成后,执行tar -zxvf mysql-5.7.xx.tar.gz进行解压。进入解压后的目录,你会看到大量的构建脚本和C语言源码文件。此时不要急着编译,先核对目录名中的版本号是否与你业务线要求的一致,避免后续因版本错位导致回退麻烦。
配置编译参数
MySQL的编译核心依赖于cmake工具。在源码根目录下新建一个独立的build目录,切换进去后执行cmake命令。常用的配置参数包括-DCMAKE_INSTALL_PREFIX=/usr/local/mysql指定最终安装路径,-DMYSQL_DATADIR=/data/mysql设置数据存放位置,-DSYSCONFDIR=/etc定义配置文件目录,-DWITH_MYISAM_STORAGE_ENGINE=1启用MyISAM引擎,-DWITH_INNOBASE_STORAGE_ENGINE=1启用InnoDB引擎,-DDEFAULT_CHARSET=utf8mb4设置默认字符集,-DDEFAULT_COLLATION=utf8mb4_general_ci设置默认排序规则。这些参数可以根据实际服务器内存和业务场景灵活调整,确保构建产物符合预期。
执行编译与安装
cmake配置成功并生成Makefile后,接着运行make命令。这一步会根据CPU核心数耗时较长,如果是多核服务器,强烈建议使用make -j$(nproc)来开启并行编译,能大幅缩短等待时间。编译全部通过后,再执行make install进行正式安装。整个过程没有太多交互提示,如果中途出现红色Error字样,说明前面有依赖没装好或者配置写错了,需要检查终端日志重新来过。安装完成后,目标目录会生成bin、include、lib、share等标准子文件夹。
创建专用用户与权限分配
出于安全规范考虑,绝对不能使用系统root用户直接运行数据库进程。我们需要创建一个专用的mysql用户和组。执行groupadd mysql和useradd -r -g mysql -s /bin/false mysql。然后将整个安装目录及数据目录的所有权交给该用户,命令为chown -R mysql:mysql /usr/local/mysql以及chown -R mysql:mysql /data/mysql。同时确保二进制文件具备执行权限,保障后续初始化脚本能够顺利调用系统资源。
初始化数据库实例
切换到mysql用户身份,进入安装目录的bin文件夹。执行./mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql。注意这里使用了insecure参数,表示初始化后root账户不设置初始密码,方便初次登录调试。如果生产环境要求严格的安全基线,可以换成--initialize,但务必提前在终端记录生成的临时密码。初始化成功后,数据目录下会多出大量ibd和frm文件,这是数据库底层表结构的核心载体。
编写配置文件并启动服务
在/etc目录下新建my.cnf文件,填入基础的启动参数。重点配置mysqld段落的basedir、datadir、port、socket路径,以及character-set-server和collation-server。保存退出后,将系统支持文件复制到init.d目录,cp support-files/mysql.server /etc/init.d/mysqld。赋予执行权限chmod +x /etc/init.d/mysqld,然后通过service mysqld start启动服务。可以使用chkconfig mysqld on或systemctl enable mysqld设置开机自启,确保重启后服务自动拉起。
安全加固与功能验证
服务跑起来后,执行mysql -uroot -p登录数据库。由于采用了无密码初始化,直接回车即可进入命令行界面。首要任务是修改root密码,使用ALTER USER root@localhost IDENTIFIED BY 你的强密码;。接着清理默认的空用户和测试数据库,执行DROP DATABASE test;和DELETE FROM mysql.user WHERE User='';。最后用SHOW DATABASES;查看列表,确认information_schema和performance_schema正常加载。至此,MySQL 5.7源码环境已完全就绪,可以直接对接后端应用进行日常运维或压力测试。



