ARM 架构源码编译部署 MySQL 5.7.42完整实战文档

文章目录

一、环境说明

  • 系统:Huawei Cloud EulerOS 2.0 (aarch64)
  • 内核:5.10.x
  • 架构:aarch64(ARM64)
  • MySQL版本:5.7.42(Source Distribution)
  • 安装方式:源码编译安装

二、为什么只能源码编译?

  1. 官方MySQL5.7已停止维护
  2. 官方5.7仅提供x86_64二进制包
  3. ARM架构(aarch64)无法使用rpm/tar二进制包
  4. Percona/Oracle均不提供5.7ARM编译包

👉 结论:只能源码编译,这是唯一可靠方案。

三、安装依赖环境

bash 复制代码
yum install -y \
gcc gcc-c++ make cmake3 \
ncurses-devel openssl-devel libaio-devel \
bison perl perl-Data-Dumper \
libtirpc-devel rpcgen \
zlib-devel

四、准备Boost(必须)

MySQL5.7强依赖Boost1.59,不能用系统Boost。

bash 复制代码
cd /usr/local/src
wget https://archives.boost.io/release/1.59.0/source/boost_1_59_0.tar.gz
tar xf boost_1_59_0.tar.gz

五、创建 MySQL 用户

bash 复制代码
groupadd mysql
useradd -r -g mysql -s /sbin/nologin mysql

六、准备目录结构

bash 复制代码
mkdir -p /usr/local/mysql
mkdir -p /data1/mysqldb/{data,log,run,tmp}
chown -R mysql:mysql /usr/local/mysql /data1/mysqldb

七、源码编译 MySQL 5.7.42

1️⃣解压源码

bash 复制代码
cd /usr/local/src
tar xf mysql-5.7.42.tar.gz
cd mysql-5.7.42
mkdir build && cd build

2️⃣CMake 配置(关键)

bash 复制代码
cmake .. \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data1/mysqldb/data \
-DSYSCONFDIR=/etc \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/data1/mysqldb/run/mysql.sock \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DENABLED_LOCAL_INFILE=1 \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/boost_1_59_0

看到 Configuring done 即表示成功

3️⃣ 编译与安装

bash 复制代码
make -j$(nproc)   # 使用当前机器全部 CPU 核心并行编译(nproc=CPU核数),编译速度最快,但会瞬间拉满 CPU,生产环境慎用
make -j8          # 限制并行编译任务数,避免对线上业务造成影响,8代表CPU核数
make install

八、初始化数据库

1️⃣ 初始化(无密码模式)

bash 复制代码
/usr/local/mysql/bin/mysqld --initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/data1/mysqldb/data

root 初始密码为空

九、MySQL 配置文件

bash 复制代码
vim /etc/my.cnf
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /data1/mysqldb/data
port = 3306

socket = /data1/mysqldb/tmp/mysql.sock
pid-file = /data1/mysqldb/run/mysqld.pid
log-error = /data1/mysqldb/log/mysqld.log

character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
max_connections = 500

[client]
socket = /data1/mysqldb/tmp/mysql.sock
port = 3306

十、systemd 服务配置

bash 复制代码
cat >/etc/systemd/system/mysqld.service <<'EOF'
[Unit]
Description=MySQL Server
After=network.target


[Service]
Type=simple
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
Restart=on-failure


[Install]
WantedBy=multi-user.target
EOF

十一、启动MySQL

bash 复制代码
systemctl daemon-reload
systemctl enable mysqld
systemctl start mysqld

十二、首次登录与安全设置

bash 复制代码
mysql -uroot

设置 root 密码

bash 复制代码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root@123456';
FLUSH PRIVILEGES;
相关推荐
水上冰石3 小时前
【MHS协议】第四章:ESP32 接入 MHS 协议实战:从零构建一个 MHS 兼容设备
人工智能·架构·机器人
mldong4 小时前
同一份 15 个流程 JSON,第六种语言也跑通了:工作流引擎 Rust 移植实录
架构·rust
ZGIAI6 小时前
旧模型下线前,客服 Agent 怎么迁移
人工智能·架构
ZGIAI6 小时前
客服知识库更新后,怎么批量验收
人工智能·架构
万物智能11 小时前
硬件调试三板斧—【万物智能之开源鸿蒙OpenHarmony系统实战开发系列教程】
后端·架构
这个DBA有点耶13 小时前
从MySQL 5.7到8.0:JSON查询性能差在哪?虚拟列索引vs多值索引怎么选
数据库·mysql·架构
Erishen14 小时前
🚀 用 React Three Fiber 造一个会说话的 3D 数字人:从密钥安全到 Serverless 10 秒极限的踩坑全记录
架构·开源·agent
万物智能18 小时前
启动链路与分区—【万物智能之开源鸿蒙OpenHarmony系统实战开发系列教程】
后端·架构
mldong20 小时前
换了工作流引擎,前端一行代码没改
java·架构
羑悻的小杀马特21 小时前
百度ASR+BRPC+ETCD高并发高可用架构搭建,C++客户端API封装+语音识别子服务注册发现+全链路测试调优终极指南!
架构·sdk·etcd·cmake·百度智能云·brpc·语音识别子服务