当前位置: 代码网 > it编程>数据库>Mysql > MySQL的编译安装实战指南

MySQL的编译安装实战指南

2026年03月05日 Mysql 我要评论
在 linux(以 centos 7/stream 8/9 为例)上源码编译安装 mysql 8.0是一个相对复杂的过程,因为它需要大量的依赖库、较高的内存(建议 4gb 以上,否则编译可能失败)以及

在 linux(以 centos 7/stream 8/9 为例)上源码编译安装 mysql 8.0是一个相对复杂的过程,因为它需要大量的依赖库、较高的内存(建议 4gb 以上,否则编译可能失败)以及较新的 cmake 版本。

以下是基于最新环境整理的mysql 8.0 源码编译安装完整实战指南

⚠️ 编译前重要提示

  • 硬件要求:编译过程非常消耗内存和 cpu。建议至少 2核 cpu 和 4gb 内存。如果内存只有 2gb,必须增加 swap 分区,否则 make 过程中会被系统杀掉(oom)。
  • 时间成本:编译过程可能需要 30 分钟到 2 小时,取决于机器性能。
  • boost 库:mysql 8.0 强依赖 boost 库,且对版本要求严格。通常推荐下载包含 boost 的源码包(文件名带 boost)。

第一步:系统环境准备

1. 卸载冲突软件

确保系统中没有安装 mariadb 或旧版 mysql。

# 停止服务
systemctl stop mariadb
systemctl disable mariadb
# 卸载
yum remove -y mariadb-libs mariadb mysql mysql-libs
rm -rf /etc/my.cnf /etc/mysql

2. 安装编译依赖工具

mysql 8.0 编译需要 gccgcc-c++cmakencursesbisonopenssl 等开发包。

yum install -y gcc gcc-c++ cmake make ncurses-devel bison openssl-devel openssl libaio-devel libtirpc-devel rpcgen libxcrypt-devel perl wget tar vim

3. 升级 cmake (关键步骤)

centos 7 自带的 cmake 版本通常过低(2.8.x),而 mysql 8.0 需要 cmake 3.5+(建议 3.16+)。
如果 cmake --version 显示版本低于 3.5,请执行以下操作升级:

# 下载较新版本的 cmake (例如 3.24.2)
cd /usr/local/src
wget https://github.com/kitware/cmake/releases/download/v3.24.2/cmake-3.24.2-linux-x86_64.tar.gz
# 或者编译安装源码版 cmake (如果上面的二进制包不可用)
# wget https://cmake.org/files/v3.24/cmake-3.24.2.tar.gz
# 解压二进制包直接可用
tar -zxvf cmake-3.24.2-linux-x86_64.tar.gz
mv cmake-3.24.2-linux-x86_64 cmake-3.24.2
ln -s /usr/local/src/cmake-3.24.2/bin/cmake /usr/bin/cmake
ln -s /usr/local/src/cmake-3.24.2/bin/ccmake /usr/bin/ccmake
# 验证版本
cmake --version 
# 应显示 3.24.2 或更高

4. 创建用户和目录

# 创建 mysql 用户和组
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
# 创建安装目录和数据目录
mkdir -p /usr/local/mysql
mkdir -p /data/mysql
chown -r mysql:mysql /data/mysql
chown -r mysql:mysql /usr/local/mysql

第二步:下载源码包

强烈建议下载带有 boost 的源码包(文件名包含 boost),这样可以避免手动下载匹配版本的 boost 库的麻烦。

前往官网或使用 wget 下载(版本号可根据需要调整,这里以 8.0.36 为例):

cd /usr/local/src
# 下载带 boost 的源码包 (约 200mb+)
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-8.0.36.tar.gz
# 解压
tar -zxvf mysql-boost-8.0.36.tar.gz
cd mysql-8.0.36

第三步:配置 cmake (核心步骤)

创建一个 build 目录进行编译(推荐 out-of-source 编译),然后运行 cmake 配置。

mkdir build
cd build
cmake .. \
-dcmake_install_prefix=/usr/local/mysql \
-dmysql_datadir=/data/mysql \
-dsysconfdir=/etc \
-dwith_boost=../boost/boost_1_81_0 \
-dmysql_unix_addr=/tmp/mysql.sock \
-ddefault_charset=utf8mb4 \
-ddefault_collation=utf8mb4_general_ci \
-dwith_innobase_storage_engine=1 \
-dwith_archive_storage_engine=1 \
-dwith_blackhole_storage_engine=1 \
-dwith_partition_storage_engine=1 \
-dwith_perfschema_storage_engine=1 \
-dwithout_mroonga_storage_engine=1 \
-dwith_debug=0 \
-dwith_ssl=system \
-dwith_zlib=bundled \
-denabled_local_infile=1 \
-dwith_embedded_server=0

参数解释:

  • -dcmake_install_prefix: 安装路径。
  • -dmysql_datadir: 数据文件存放路径。
  • -dwith_boost: 指定 boost 库的路径(解压后的源码包内自带,路径需对应实际文件夹名,如 boost_1_81_0)。
  • -ddefault_charset: 默认字符集,推荐 utf8mb4
  • -dwith_ssl=system: 使用系统安装的 openssl。

注意:如果 cmake 报错,请仔细阅读错误信息,通常是缺少某个开发包(如 rpcgen 或 libtirpc),安装后重新运行 cmake 命令即可。

第四步:编译与安装

这一步最耗时。建议使用 make -j 开启多线程编译(nproc 查看 cpu 核数)。

# 编译 (根据 cpu 核数调整 -j 后面的数字,例如 4 核就用 -j 4)
make -j $(nproc)
# 安装
make install

如果在 make 过程中卡死或报错 killed,说明内存不足,请立即增加 swap 分区。

第五步:初始化与配置

1. 环境变量配置

echo 'export path=/usr/local/mysql/bin:$path' >> /etc/profile
source /etc/profile

2. 编写配置文件 /etc/my.cnf

[mysqld]
basedir = /usr/local/mysql
datadir = /data/mysql
port = 3306
socket = /tmp/mysql.sock
pid-file = /data/mysql/mysqld.pid
user = mysql
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
skip-name-resolve
sql_mode = no_engine_substitution,strict_trans_tables
[client]
socket = /tmp/mysql.sock
default-character-set = utf8mb4

3. 初始化数据库

mysql 8.0 推荐使用 --initialize-insecure 生成空密码,方便首次登录,或者使用 --initialize 生成随机密码。

# 确保数据目录权限正确
chown -r mysql:mysql /data/mysql
chown -r mysql:mysql /usr/local/mysql
# 初始化 (不安全模式,root 无密码)
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
# 如果要用安全模式(生成临时密码),请看日志末尾
# /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql

4. 启动服务

编译安装不会自动注册 systemd 服务,需要手动复制脚本或创建 service 文件。

方法 a:使用官方提供的启动脚本(简单)

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
# 启动
/etc/init.d/mysqld start
# 设置开机自启
chkconfig --add mysqld
chkconfig mysqld on

方法 b:使用 systemd (推荐 centos 7+)创建 /etc/systemd/system/mysqld.service:

[unit]
description=mysql server
after=network.target
[service]
type=forking
user=mysql
group=mysql
execstart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
execreload=/bin/kill -hup $mainpid
killmode=process
restart=on-failure
limitnofile=65535
[install]
wantedby=multi-user.target

然后执行:

systemctl daemon-reload
systemctl start mysqld
systemctl enable mysqld

第六步:登录与安全加固

登录数据库

如果是 --initialize-insecure

mysql -u root

如果是 --initialize

grep 'temporary password' /data/mysql/error.log
mysql -u root -p
# 输入上面查到的临时密码

修改密码与配置首次登录后(特别是安全初始化),必须修改密码:

-- 修改 root 密码
alter user 'root'@'localhost' identified by 'yourstrongpassword123!';
-- 允许远程连接 (可选)
create user 'root'@'%' identified by 'yourstrongpassword123!';
grant all privileges on *.* to 'root'@'%' with grant option;
flush privileges;
-- 退出
exit;

验证安装

mysql -v
# 输出应包含 "ver 8.0.xx"
netstat -tlnp | grep 3306
# 确认端口监听

常见问题排查

  • 内存不足 (oom): 编译时进程被杀。
    • 解决: dd if=/dev/zero of=/swapfile bs=1m count=4096 && mkswap /swapfile && swapon /swapfile (增加 4g swap)。
  • boost 版本不匹配: cmake 报错 boost 版本不对。
    • 解决: 务必下载带 boost 的源码包,并且 -dwith_boost 路径要指向解压出来的具体 boost 文件夹(如 boost_1_81_0)。
  • ssl 错误: 编译找不到 ssl。
    • 解决: 确保安装了 openssl-devel,并在 cmake 中使用 -dwith_ssl=system

按照以上步骤,您就可以成功从源码编译并安装一个定制的 mysql 8.0 数据库了。

到此这篇关于mysql的编译安装实战指南的文章就介绍到这了,更多相关mysql编译安装内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com