Linux环境下MySQL源码包安装前的准备工作
在Linux系统中通过源码包安装MySQL,相较于二进制包或RPM包,能提供更高的自定义性和灵活性,但过程相对复杂,安装前需确保系统环境满足要求,并完成必要的准备工作。

系统环境检查
MySQL源码编译对系统依赖和硬件资源有一定要求,建议使用稳定的Linux发行版,如CentOS 7+、Ubuntu 18.04+等,核心检查项包括:
- 操作系统版本:通过
uname -r确认内核版本,推荐3.10以上; - 编译工具:安装GCC、CMake、Make等编译工具,例如在CentOS中执行
yum groupinstall "Development Tools",Ubuntu中执行apt install build-essential; - 依赖库:MySQL依赖
ncurses-devel、openssl-devel、libcurl-devel等库,需提前安装(CentOS:yum install ncurses-devel openssl-devel libcurl-devel;Ubuntu:apt install libncurses5-dev libssl-dev libcurl4-openssl-dev); - 磁盘空间:确保根目录或
/usr/local有至少5GB可用空间,用于存放源码和编译后的文件。
用户与权限配置
MySQL运行需独立用户,避免使用root账户,执行以下命令创建MySQL用户和用户组:
groupadd mysql
useradd -r -g mysql mysql
其中-r表示系统用户,不创建家目录,后续编译和安装过程建议使用普通用户(如mysql)或sudo提权,避免直接使用root操作。
下载MySQL源码包
从MySQL官网(https://dev.mysql.com/downloads/mysql/)下载最新稳定版源码包,选择“Source Code”类型的tar.gz压缩包,例如下载MySQL 8.0.34版本:
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-boost-8.0.34.tar.gz
boost库是MySQL 8.0编译的必需依赖,官方已集成在源码包中,无需单独下载。
MySQL源码包的编译与安装
完成准备工作后,进入源码编译阶段,核心步骤包括解压、配置、编译和安装。
解压源码包
将下载的源码包解压至指定目录(如/usr/local/src):
tar -xvf mysql-boost-8.0.34.tar.gz -C /usr/local/src
cd /usr/local/src/mysql-8.0.34
配置编译参数
使用CMake工具配置编译选项,这是源码安装的关键步骤,常用参数说明:

-DCMAKE_INSTALL_PREFIX:安装路径,默认/usr/local/mysql;-DMYSQL_DATADIR:数据存储路径,建议单独设置(如/data/mysql);-DDEFAULT_CHARSET:默认字符集,推荐utf8mb4;-DDEFAULT_COLLATION:默认排序规则,推荐utf8mb4_general_ci;-DWITH_BOOST:指定boost库路径(已集成则无需手动设置);-DWITH_SSL:启用SSL支持(默认开启)。
示例配置命令:
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=boost \
-DWITH_SSL=yes
若配置失败(如依赖缺失),可通过make clean清理后重新执行。
编译与安装
配置完成后,执行编译和安装命令,编译过程耗时较长,根据服务器性能可能需要10-30分钟:
make -j$(nproc) # 使用多核并行编译,加快速度
make install # 安装到指定路径
编译完成后,检查/usr/local/mysql目录是否存在,确认安装成功。
MySQL初始化与启动配置
源码安装后,需进行初始化配置,包括数据目录权限、配置文件创建、服务启动等步骤。
创建数据目录并授权
mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql
chown -R mysql:mysql /usr/local/mysql
初始化MySQL数据目录
使用mysqld工具初始化数据库,生成系统表和临时密码:
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
记录初始化日志中的临时密码(通常在~/.mysql_secret或日志末尾)。
创建配置文件
MySQL源码包默认不提供my.cnf,需手动创建,建议在/etc目录下创建:

vim /etc/my.cnf
``` 参考(根据实际需求调整):
```ini
[mysqld]
basedir = /usr/local/mysql
datadir = /data/mysql
port = 3306
socket = /tmp/mysql.sock
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
default_authentication_plugin = mysql_native_password
[client]
port = 3306
socket = /tmp/mysql.sock
default-character-set = utf8mb4
配置系统服务
创建systemd服务文件,实现开机自启和便捷管理:
vim /etc/systemd/system/mysqld.service
``` 如下:
```ini
[Unit]
Description=MySQL Server
After=network.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
启动服务并设置开机自启:
systemctl daemon-reload
systemctl start mysqld
systemctl enable mysqld
修改root密码与安全配置
首次登录需使用临时密码:
/usr/local/mysql/bin/mysql -u root -p
登录后执行以下命令修改密码(替换YourNewPassword):
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPassword';
FLUSH PRIVILEGES;
运行mysql_secure_installation脚本,完成匿名用户删除、测试库移除等安全配置。
常见问题与注意事项
- 编译失败:检查依赖库是否完整,可通过
yum或apt安装缺失组件; - 权限问题:确保
mysql用户对数据目录和安装目录有读写权限; - 端口冲突:若3306端口被占用,修改
my.cnf中的port参数; - 字符集乱码:确认配置文件中
character-set-server和collation-server设置正确; - 服务无法启动:检查
mysqld.log日志(通常在/data/mysql或/usr/local/mysql/data),定位错误原因。
通过以上步骤,即可完成Linux环境下MySQL源码包的安装与配置,相较于预编译包,源码安装虽复杂,但能根据实际需求优化编译选项,适合对性能和功能有定制化要求的场景。














