如何在无外网的Linux服务器上离线源码编译搭建MySQL 8.4?

P粉602998670

P粉602998670

2026-07-21

709人浏览

原创

mysql 8.4离线源码编译需确保glibc≥2.17、x86_64架构,并提前离线部署cmake 3.20+、gcc 9.4+及全部依赖;初始化必须指定--lower-case-table-names=1,启动前须手动创建并授权pid-file和socket目录。

如何在无外网的linux服务器上离线源码编译搭建mysql 8.4?

mysqld 启动失败、cmake 报错、glibc 版本不兼容——这些不是配置问题,而是离线源码编译 MySQL 8.4 时几乎必踩的坑。直接用二进制包更稳;真要源码编译,必须提前在同构环境里交叉验证所有依赖。

确认系统架构和 glibc 版本是否匹配 MySQL 8.4 源码要求

MySQL 8.4 官方源码(如 mysql-8.4.0.tar.gz)要求最低 glibc 2.17(RHEL/CentOS 7+ 或 Ubuntu 16.04+),且仅支持 x86_64 架构。离线环境下无法动态升级 glibc,一旦版本低于要求,cmake 阶段会静默失败或 make 后运行时报 GLIBC_2.x not found

  • 先在目标服务器执行:ldd --versionuname -m,确保输出为 glibc 2.17+x86_64
  • 不要依赖“看起来像 CentOS 7”就跳过验证——某些定制版 OS 的 glibc 实际是阉割版
  • 若版本不足,放弃源码编译,改用对应 glibc 版本的二进制包(如 mysql-8.4.0-linux-glibc2.17-x86_64.tar.xz

离线准备 CMake、GCC 和全部构建依赖

源码编译不是只传一个 .tar.gz 就行。cmake 3.20+gcc 9.4+openssl-develncurses-devellibaio-devel 等必须提前打包好并离线部署。缺任意一个,cmake . 会报类似 Could NOT find OpenSSLCannot find ncurses.h 的错误,且不会告诉你缺的是头文件还是库文件。

Go语言(Golang)Linux版
Go语言(Golang)Linux版

Go语言(Golang)Linux版适合在 Linux 环境中部署 Go 编译工具链,支持服务端开发、微服务、网络程序、容器化项目和自动化工具开发。

下载
  • 在一台同系统、同版本的联网机器上,用 yum install --downloadonly --downloaddir=./deps 下载所有依赖 RPM 包(CentOS/RHEL)或用 apt download(Ubuntu/Debian)
  • cmakegcc 必须是静态编译或自带运行时的版本;别用系统默认的旧版 cmake 2.8,它无法识别 MySQL 8.4 的 CMakeLists.txt 语法
  • cmake 二进制、gcc 工具链、所有 .rpm.deb 包一并拷到目标机,用 rpm -ivh *.rpm --nodepsdpkg -i *.deb 安装

初始化前必须设置 lower_case_table_names=1(且仅限首次)

MySQL 8.4 的数据字典强依赖 lower_case_table_names 设置,且该值**只能在初始化数据库前通过 mysqld 命令行参数指定,不能靠修改 my.cnf 补救**。离线环境没机会重试,一旦忽略,初始化后表名大小写行为将与应用预期不符,修复需重建整个实例。

  • 初始化命令必须带参数:./bin/mysqld --user=mysql --initialize --lower-case-table-names=1 --basedir=/usr/local/mysql --datadir=/data/mysql
  • 注意参数名是 --lower-case-table-names(带连字符),不是 lower_case_table_names;拼错会导致参数被忽略
  • 该参数值只能是 01;设为 2 在 8.4 中已被移除,会直接报错退出

启动失败时优先检查 socket 和 pid-file 路径权限

离线编译安装后 service mysql startERROR! The server quit without updating PID file,90% 是因为 pid-filesocket 所在目录不属于 mysql 用户,或父目录无执行(x)权限。这跟在线安装不同——离线编译不会自动创建 /var/run/mysqld 这类目录。

  • 检查 my.cnfpid-file=/data/mysql/mysql.pidsocket=/tmp/mysql.sock 对应路径是否存在、属主是否为 mysql
  • /tmp 默认可写,但某些加固系统会挂载 noexec,此时需改用 /var/run/mysqld/mysql.sock 并手动创建目录:mkdir -p /var/run/mysqld && chown mysql:mysql /var/run/mysqld
  • 务必确认 /data/mysql 目录下有 mysql.err 日志文件,且 mysql 用户对其有写权限;日志里通常有真实报错,比如 Can't create/write to file '/data/mysql/mysql.pid'
真正麻烦的从来不是编译本身,而是你没法在离线环境里快速验证每一步是否“刚好够用”。比如 cmake 成功不代表 make 能过,make 成功也不代表 mysqld 能加载 libssl.so.1.1。最省事的做法:在同构虚拟机里完整跑通一遍,再把整个 build/ 目录和最终二进制打包带走。

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

355

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

617

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

1215

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

428

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

324

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

190

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

1031

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

1847

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

322

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL vs MySQL
PostgreSQL vs MySQL

共1课时 | 122人学习

使用phpenv集成环境安装极致CMS
使用phpenv集成环境安装极致CMS

共2课时 | 221人学习

phpEnv手册
phpEnv手册

共0课时 | 0人学习