MySQL在Linux系统下的源码安装指南,如何在Linux系统下从源码安装MySQL?,如何在Linux系统下从源码编译安装MySQL?完整指南来了!

昨天 5210阅读
在Linux系统中通过源码安装MySQL需依次执行以下步骤:首先安装依赖库(如cmake、gcc、ncurses-devel等),下载MySQL源码包并解压,进入源码目录后,使用cmake配置编译参数(可指定安装路径、字符集等),生成Makefile文件,接着执行make编译源码(耗时较长),完成后运行make install安装到指定目录,安装后需初始化数据目录(mysql_install_db),设置配置文件my.cnf,并创建系统服务,最后启动MySQL服务,运行安全脚本(mysql_secure_installation)设置root密码,完成基础安全配置,注意安装过程中需确保有足够的磁盘空间和内存资源,不同版本的具体参数可能存在差异。

MySQL作为全球领先的开源关系型数据库管理系统,在企业级应用中占据核心地位,相比二进制包安装,源码编译安装MySQL具有以下显著优势:

MySQL在Linux系统下的源码安装指南,如何在Linux系统下从源码安装MySQL?,如何在Linux系统下从源码编译安装MySQL?完整指南来了! 第1张

  • 获取最新功能更新和安全补丁
  • 深度定制数据库功能和性能参数
  • 针对特定硬件架构优化执行效率
  • 灵活选择编译选项和依赖组件
  • 深入理解数据库底层实现机制

本指南将详细介绍从源码编译安装MySQL 8.0的完整流程,涵盖环境准备、编译优化、安全配置到性能调优的全过程。

系统环境准备

1 硬件要求建议

组件 最低配置 生产环境推荐
CPU 双核处理器 8核以上处理器
内存 2GB 32GB及以上
磁盘空间 20GB 100GB+独立分区
磁盘类型 HDD SSD/NVMe

2 软件依赖安装

根据不同的Linux发行版,安装必备的开发工具和库文件:

Debian/Ubuntu系统:

sudo apt update && sudo apt full-upgrade -y
sudo apt install -y build-essential cmake ninja-build \
    libncurses5-dev libssl-dev zlib1g-dev libudev-dev \
    libprotobuf-dev protobuf-compiler libboost-all-dev \
    bison flex liblz4-dev libzstd-dev libsnappy-dev \
    libcurl4-openssl-dev pkg-config

RHEL/CentOS系统:

sudo yum groupinstall -y "Development Tools"
sudo yum install -y cmake3 ncurses-devel openssl-devel \
    zlib-devel liburing-devel protobuf-devel protobuf-compiler \
    boost-devel bison flex lz4-devel zstd-devel snappy-devel \
    libcurl-devel pkgconfig

3 源码获取与验证

推荐从MySQL官方下载稳定版本源码包并进行完整性校验:

# 下载源码包和校验文件
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33.tar.gz
wget https://dev.mysql.com/downloads/gpg/?file=mysql-8.0.33.tar.gz&p=26 -O mysql-8.0.33.tar.gz.asc
# 验证SHA256校验和
sha256sum -c mysql-8.0.33.tar.gz.asc
# 解压源码
tar -zxvf mysql-8.0.33.tar.gz
cd mysql-8.0.33

编译配置与优化

1 CMake高级配置选项

创建独立的构建目录并执行CMake配置:

mkdir build && cd build
cmake .. \
    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
    -DMYSQL_DATADIR=/data/mysql \
    -DSYSCONFDIR=/etc \
    -DWITH_SYSTEMD=1 \
    -DWITH_SSL=system \
    -DWITH_ZLIB=system \
    -DWITH_LTO=ON \
    -DCMAKE_BUILD_TYPE=RelWithDebInfo \
    -DCMAKE_CXX_FLAGS="-march=native -O3 -pipe" \
    -DCMAKE_C_FLAGS="-march=native -O3 -pipe" \
    -DDEFAULT_CHARSET=utf8mb4 \
    -DDEFAULT_COLLATION=utf8mb4_0900_ai_ci \
    -DENABLED_LOCAL_INFILE=ON \
    -DWITH_INNOBASE_STORAGE_ENGINE=ON \
    -DWITH_ARCHIVE_STORAGE_ENGINE=ON \
    -DWITH_BLACKHOLE_STORAGE_ENGINE=ON \
    -DWITH_FEDERATED_STORAGE_ENGINE=OFF \
    -DWITH_TEST_TRACE_PLUGIN=OFF \
    -DWITH_DEBUG=OFF

关键配置说明:

  1. -march=native:启用针对当前CPU架构的指令集优化
  2. -DWITH_LTO=ON:启用链接时优化提升性能
  3. RelWithDebInfo:保留调试符号的发布版本
  4. 存储引擎按需启用,减少不必要的功能模块

2 并行编译优化

充分利用多核CPU进行并行编译:

MySQL在Linux系统下的源码安装指南,如何在Linux系统下从源码安装MySQL?,如何在Linux系统下从源码编译安装MySQL?完整指南来了! 第2张

# 获取CPU核心数并设置并行任务数
CORES=$(grep -c ^processor /proc/cpuinfo)
make -j$((CORES + 2)) VERBOSE=1
# 监控编译过程
watch -n 5 "echo 'CPU使用率:'; uptime; echo -e '\n内存使用:'; free -h"

编译时间预估参考:

  • 4核CPU/8GB内存:约90分钟
  • 8核CPU/16GB内存:约45分钟
  • 16核CPU/32GB内存:约25分钟

安装与初始化

1 系统级安装

sudo make install
# 创建符号链接
sudo ln -sf /usr/local/mysql /opt/mysql
# 添加环境变量
echo 'export PATH=/usr/local/mysql/bin:$PATH' | sudo tee /etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh

2 安全初始化流程

# 创建专用用户和组
sudo groupadd -r mysql
sudo useradd -r -g mysql -s /bin/false -d /var/lib/mysql mysql
# 设置数据目录权限
sudo mkdir -p /data/mysql
sudo chown -R mysql:mysql /data/mysql
sudo chmod 750 /data/mysql
# 初始化数据目录(安全模式)
sudo bin/mysqld --initialize \
    --user=mysql \
    --basedir=/usr/local/mysql \
    --datadir=/data/mysql \
    --defaults-file=/etc/my.cnf

注意:初始化完成后会在日志中生成临时root密码,位置通常在/var/log/mysql-error.log或命令行输出中。

配置文件优化

1 生产环境推荐配置

/etc/my.cnf 配置文件示例:

[mysqld]
# 基础配置
basedir = /usr/local/mysql
datadir = /data/mysql
socket = /var/run/mysqld/mysqld.sock
port = 3306
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
log-error = /var/log/mysql/error.log
# 内存配置
key_buffer_size = 32M
innodb_buffer_pool_size = 12G  # 建议为总内存的70-80%
innodb_log_file_size = 2G
innodb_buffer_pool_instances = 8
innodb_flush_neighbors = 0  # SSD建议禁用
innodb_read_io_threads = 16
innodb_write_io_threads = 16
# 连接配置
max_connections = 500
thread_cache_size = 100
table_open_cache = 4000
interactive_timeout = 300
wait_timeout = 300
# 持久化配置
innodb_flush_log_at_trx_commit = 1
sync_binlog = 1
innodb_doublewrite = ON
# 监控配置
performance_schema = ON
slow_query_log = ON
long_query_time = 2
log_queries_not_using_indexes = ON

安全加固措施

1 基础安全设置

-- 修改root密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Complex@Password123!';
-- 创建管理用户
CREATE USER 'dbadmin'@'%' IDENTIFIED WITH caching_sha2_password BY 'Admin@Secure456!';
GRANT ALL PRIVILEGES ON *.* TO 'dbadmin'@'%' WITH GRANT OPTION;
-- 应用最小权限原则
CREATE USER 'appuser'@'192.168.1.%' IDENTIFIED WITH caching_sha2_password BY 'App@Password789!';
GRANT SELECT, INSERT, UPDATE, DELETE ON appdb.* TO 'appuser'@'192.168.1.%';
-- 清理默认账户
DROP USER IF EXISTS ''@'localhost';
DROP USER IF EXISTS ''@'%';
DROP DATABASE IF EXISTS test;

2 网络安全配置

[mysqld]
# 启用SSL连接
require_secure_transport = ON
ssl-ca = /etc/mysql/ssl/ca.pem
ssl-cert = /etc/mysql/ssl/server-cert.pem
ssl-key = /etc/mysql/ssl/server-key.pem
# 连接限制
max_connect_errors = 100
connect_timeout = 10

性能监控方案

1 Prometheus监控集成

# 创建监控专用账户
mysql -u root -p -e "CREATE USER 'exporter'@'localhost' \
    IDENTIFIED WITH mysql_native_password BY 'Exporter@Pass123!' \
    WITH MAX_USER_CONNECTIONS 3;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';"
# 安装mysqld_exporter
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.15.0/mysqld_exporter-0.15.0.linux-amd64.tar.gz
tar xvf mysqld_exporter-*.tar.gz
sudo mv mysqld_exporter-*.linux-amd64/mysqld_exporter /usr/local/bin/

2 性能基准测试

使用sysbench进行压力测试:

# 准备测试数据
sysbench oltp_read_write \
    --db-driver=mysql \
    --mysql-host=localhost \
    --mysql-port=3306 \
    --mysql-user=sysbench \
    --mysql-password='Test@123' \
    --mysql-db=sbtest \
    --tables=20 \
    --table-size=1000000 \
    prepare
# 执行测试
sysbench oltp_read_write \
    --db-driver=mysql \
    --mysql-host=localhost \
    --threads=32 \
    --time=300 \
    --report-interval=10 \
    run

常见问题解决方案

1 编译错误排查

问题: CMake报错缺少Boost库
解决方案:

# 手动安装Boost
wget https://boostorg.jfrog.io/artifactory/main/release/1.77.0/source/boost_1_77_0.tar.gz
tar xvf boost_1_77_0.tar.gz
cd boost_1_77_0
./bootstrap.sh
./b2 install

2 启动故障处理

问题: InnoDB初始化失败
排查步骤:

  1. 检查错误日志:sudo journalctl -u mysql --no-pager -n 50
  2. 验证文件权限:sudo ls -la /data/mysql
  3. 检查SELinux状态:sudo setenforce 0(临时禁用)
  4. 验证磁盘空间:df -h /data

    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]