编译安装mysql [复制链接]
发表于 2026-3-1 00:39:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在 Linux(以 CentOS 7/Stream 8/9 为例)上源码编译安装 MySQL 8.0是一个相对复杂的过程,由于它必要大量的依赖库、较高的内存(发起 4GB 以上,否则编译大概失败)以及较新的 CMake 版本
以下是基于最新情况整理的MySQL 8.0 源码编译安装完备实战指南
⚠️ 编译前紧张提示


  • 硬件要求:编译过程非常斲丧内存和 CPU。发起至少 2核 CPU4GB 内存。如果内存只有 2GB,必须增长 Swap 分区,否则 make 过程中会被体系杀掉(OOM)。
  • 时间资源:编译过程大概必要 30 分钟到 2 小时,取决于呆板性能
  • Boost 库:MySQL 8.0 强依赖 Boost 库,且对版本要求严格。通常保举下载包罗 Boost 的源码包(文件名带 boost)。
第一步:体系情况准备

1. 卸载辩说软件

确保体系中没有安装 MariaDB 或旧版 MySQL。
  1. # 停止服务
  2. systemctl stop mariadb
  3. systemctl disable mariadb
  4. # 卸载
  5. yum remove -y mariadb-libs mariadb mysql mysql-libs
  6. rm -rf /etc/my.cnf /etc/mysql
复制代码
2. 安装编译依赖工具

MySQL 8.0 编译必要 gcc, gcc-c++, cmake, ncurses, bison, openssl 等开发包。
  1. 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,请实行以下操纵升级:
  1. # 下载较新版本的 cmake (例如 3.24.2)
  2. cd /usr/local/src
  3. wget https://github.com/Kitware/CMake/releases/download/v3.24.2/cmake-3.24.2-linux-x86_64.tar.gz
  4. # 或者编译安装源码版 cmake (如果上面的二进制包不可用)
  5. # wget https://cmake.org/files/v3.24/cmake-3.24.2.tar.gz
  6. # 解压二进制包直接可用
  7. tar -zxvf cmake-3.24.2-linux-x86_64.tar.gz
  8. mv cmake-3.24.2-linux-x86_64 cmake-3.24.2
  9. ln -s /usr/local/src/cmake-3.24.2/bin/cmake /usr/bin/cmake
  10. ln -s /usr/local/src/cmake-3.24.2/bin/ccmake /usr/bin/ccmake
  11. # 验证版本
  12. cmake --version
  13. # 应显示 3.24.2 或更高
复制代码
4. 创建用户和目次
  1. # 创建 mysql 用户和组
  2. groupadd mysql
  3. useradd -r -g mysql -s /bin/false mysql
  4. # 创建安装目录和数据目录
  5. mkdir -p /usr/local/mysql
  6. mkdir -p /data/mysql
  7. chown -R mysql:mysql /data/mysql
  8. chown -R mysql:mysql /usr/local/mysql
复制代码
第二步:下载源码包

猛烈发起下载带有 Boost 的源码包(文件名包罗 boost),如许可以克制手动下载匹配版本的 Boost 库的贫困。
前去官网或使用 wget 下载(版本号可根据必要调解,这里以 8.0.36 为例):
  1. cd /usr/local/src
  2. # 下载带 boost 的源码包 (约 200MB+)
  3. wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-8.0.36.tar.gz
  4. # 解压
  5. tar -zxvf mysql-boost-8.0.36.tar.gz
  6. cd mysql-8.0.36
复制代码
第三步:设置 CMake (核心步调)

创建一个 build 目次举行编译(保举 out-of-source 编译),然后运行 cmake 设置。
  1. mkdir build
  2. cd build
  3. cmake .. \
  4. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
  5. -DMYSQL_DATADIR=/data/mysql \
  6. -DSYSCONFDIR=/etc \
  7. -DWITH_BOOST=../boost/boost_1_81_0 \
  8. -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
  9. -DDEFAULT_CHARSET=utf8mb4 \
  10. -DDEFAULT_COLLATION=utf8mb4_general_ci \
  11. -DWITH_INNOBASE_STORAGE_ENGINE=1 \
  12. -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
  13. -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
  14. -DWITH_PARTITION_STORAGE_ENGINE=1 \
  15. -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
  16. -DWITHOUT_MROONGA_STORAGE_ENGINE=1 \
  17. -DWITH_DEBUG=0 \
  18. -DWITH_SSL=system \
  19. -DWITH_ZLIB=bundled \
  20. -DENABLED_LOCAL_INFILE=1 \
  21. -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 核数)。
  1. # 编译 (根据 CPU 核数调整 -j 后面的数字,例如 4 核就用 -j 4)
  2. make -j $(nproc)
  3. # 安装
  4. make install
复制代码
如果在 make 过程中卡死或报错 Killed,阐明内存不敷,请立即增长 Swap 分区。
第五步:初始化与设置

1. 情况变量设置
  1. echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
  2. source /etc/profile
复制代码
2. 编写设置文件 /etc/my.cnf
  1. [mysqld]
  2. basedir = /usr/local/mysql
  3. datadir = /data/mysql
  4. port = 3306
  5. socket = /tmp/mysql.sock
  6. pid-file = /data/mysql/mysqld.pid
  7. user = mysql
  8. character-set-server = utf8mb4
  9. collation-server = utf8mb4_general_ci
  10. skip-name-resolve
  11. sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
  12. [client]
  13. socket = /tmp/mysql.sock
  14. default-character-set = utf8mb4
复制代码
3. 初始化数据库

MySQL 8.0 保举使用 --initialize-insecure 天生空暗码,方便初次登录,大概使用 --initialize 天生随机暗码。
  1. # 确保数据目录权限正确
  2. chown -R mysql:mysql /data/mysql
  3. chown -R mysql:mysql /usr/local/mysql
  4. # 初始化 (不安全模式,root 无密码)
  5. /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
  6. # 如果要用安全模式(生成临时密码),请看日志日志末尾
  7. # /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
复制代码
4. 启动服务

编译安装不会自动注册 systemd 服务,必要手动复制脚本或创建 service 文件。
方法 A:使用官方提供的启动脚本(简朴)
  1. cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
  2. chmod +x /etc/init.d/mysqld
  3. # 启动
  4. /etc/init.d/mysqld start
  5. # 设置开机自启
  6. chkconfig --add mysqld
  7. chkconfig mysqld on
复制代码
方法 B:使用 Systemd (保举 CentOS 7+)
创建 /etc/systemd/system/mysqld.service:
  1. [Unit]
  2. Description=MySQL Server
  3. After=network.target
  4. [Service]
  5. Type=forking
  6. User=mysql
  7. Group=mysql
  8. ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
  9. ExecReload=/bin/kill -HUP $MAINPID
  10. KillMode=process
  11. Restart=on-failure
  12. LimitNOFILE=65535
  13. [Install]
  14. WantedBy=multi-user.target
复制代码
然后实行:
  1. systemctl daemon-reload
  2. systemctl start mysqld
  3. systemctl enable mysqld
复制代码
第六步:登录与安全加固


  • 登录数据库

    • 如果是 --initialize-insecure:
      1. mysql -u root
      复制代码
    • 如果是 --initialize:
      1. grep 'temporary password' /data/mysql/error.log
      2. mysql -u root -p
      3. # 输入上面查到的临时密码
      复制代码

  • 修改暗码与设置
    初次登录后(特殊是安全初始化),必须修改暗码:
    1. -- 修改 root 密码
    2. ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPassword123!';
    3. -- 允许远程连接 (可选)
    4. CREATE USER 'root'@'%' IDENTIFIED BY 'YourStrongPassword123!';
    5. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
    6. FLUSH PRIVILEGES;
    7. -- 退出
    8. EXIT;
    复制代码
  • 验证安装
    1. mysql -V
    2. # 输出应包含 "Ver 8.0.xx"
    3. netstat -tlnp | grep 3306
    4. # 确认端口监听
    复制代码
常见标题排查


  • 内存不敷 (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 数据库了。

免责声明:如果侵犯了您的权益,请联系站长及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金.
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表