告别RPM包!生产环境MySQL通用二进制包安装与高可用配置全解析
一、前言
在数据库运维与架构设计中,MySQL的安装方式多种多样,包括Yum、RPM、源码编译以及通用二进制包(Generic Binaries)等。然而,在要求高可用、易维护、版本控制严格的生产环境中,我们通常强烈推荐使用通用二进制包进行部署。
相比于Yum或RPM安装,通用二进制包具有不可替代的优势:
- 环境解耦:不依赖操作系统的包管理器,避免与系统自带组件发生冲突。
- 版本可控:目录结构清晰,升级、回滚或并行多版本测试极其方便。
- 跨平台兼容:只要底层GLIBC版本满足要求,几乎可以在所有主流Linux发行版上无缝运行。
- 便于标准化:非常适合结合Ansible、Terraform等自动化工具进行批量交付。
本文将从生产环境的实际需求出发,手把手带你完成MySQL通用二进制包的标准化安装与部署。内容涵盖系统参数调优、目录规划、安全初始化及核心配置,确保你的数据库在上线之初就具备高并发与高安全的基石。
二、环境准备以及软件获取
在开始安装前,我们需要明确本次部署的软硬件环境,并准备好必要的安装包。
- 操作系统:OpenEuler 22.03 LTS
- MySQL 版本:8.0.45
- 安装方式:通用二进制包 (Generic Binary Tarball)
1、OpenEuler 操作系统
可以从 openEuler 官方下载中心获取最新的 ISO 镜像文件。
- 下载地址:openEuler 22.03镜像下载访问查看openEuler的历史版本及资源。
https://www.openeuler.openatom.cn/zh/download/archive/detail/?version=openEuler%2022.03%20LTS%20SP4 - 版本选择:建议选择
openEuler 22.03 LTS SP4长期支持版本,以获得更稳定的运行环境和更长的支持周期。

2、MySQL 软件包
- 下载地址:MySQL 软件安装包
https://downloads.mysql.com/archives/community/ - 选择建议:
- 版本:选择
8.0.45。 - 操作系统:选择
Linux - Generic。 - 文件:选择
Compressed TAR Archive,文件名类似mysql-8.0.45-linux-glibc2.28-x86_64.tar.xz。这是生产环境的首选,体积小,传输快。
- 版本:选择

三、安装前准备(解压、用户权限与目录初始化)
首先,通过 Xftp 或其他工具将下载好的二进制包上传至服务器根目录。

1、解压安装包
使用 tar 命令解压 .tar.xz 文件:
[root@OpenEuler /]# tar -xvf mysql-8.0.45-linux-glibc2.28-x86_64.tar.xz
[root@OpenEuler /]# cd mysql-8.0.45-linux-glibc2.28-x86_64

2、移动至安装目录
为了规范化管理,我们将解压后的文件夹移动到 /usr/local/mysql:
[root@OpenEuler /]# mv mysql-8.0.45-linux-glibc2.28-x86_64 /usr/local/mysql
[root@OpenEuler /]# cd /usr/local/mysql/

3、用户权限
出于安全考虑,生产环境严禁使用 root 用户运行数据库服务。
创建用户组与用户:
# 创建 mysql 用户组
[root@OpenEuler mysql]# groupadd mysql
# 创建 mysql 系统用户,加入 mysql 组,并禁止登录 shell
[root@OpenEuler mysql]# useradd -r -g mysql -s /sbin/nologin mysql
4、目录初始化
创建数据目录并授权:
# 创建数据存放目录
[root@OpenEuler mysql]# mkdir data
# 设置目录权限(生产环境建议 750)
[root@OpenEuler mysql]# chmod -R 750 data
# 设置mysql目录的账户及工作组,生产环境中不要使用root
[root@OpenEuler mysql]# chown -R mysql:mysql /usr/local/mysql
三、初始化数据库与启动(关键)
1、执行初始化
注意:命令执行完毕后,控制台会输出一个临时密码,请务必复制保存。
[root@OpenEuler mysql]# bin/mysqld --initialize --user=mysql1 --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

2、处理依赖库(如遇报错)
在 OpenEuler 等较新的 Linux 发行版上,可能会因为系统库版本较新而报错,提示找不到 libncurses.so.5 或 libtinfo.so.5。此时需要建立软链接来解决兼容性问题:
# 使用后台方式以mysql用户身份启动 MySQL 服务器,mysqld_safe 是一个用于启动和监控 MySQL 服务器的脚本
[root@OpenEuler mysql]# bin/mysqld_safe --user=mysql &
# 注意:此时上述命令执行完毕处于后台运行状态,需要另行启动一个终端
[root@OpenEuler ~]# ps -ef | grep mysql # 查看进程运行状态
[root@OpenEuler ~]# cd /usr/local/mysql
[root@OpenEuler mysql]# bin/mysql -u root -p # 登录,可能报错
# 如果报错,需要找到下面的文件进行软连接(没有报错,则不需要进行软连接!!!)
[root@OpenEuler mysql]# ln -s /usr/lib64/libncurses.so.6.3 /usr/lib64/libncurses.so.5
[root@OpenEuler mysql]# ln -s /usr/lib64/libtinfo.so.6.3 /usr/lib64/libtinfo.so.5

3、首次登录与修改密码
使用临时密码登录,并修改为常用密码(如 123456):
#以下步骤在新的终端中运行
[root@OpenEuler mysql]# bin/mysql -u root -p
Enter password: # 粘贴之前的初始密码
mysql> alter user 'root'@'localhost' identified with mysql_native_password by '123456'; 修改密码
mysql> flush privileges; # 刷新
4、验证账户插件
MySQL 8.0 默认使用 caching_sha2_password,修改为 mysql_native_password 可避免部分旧客户端连接报错。
mysql> use mysql; # 查看账户信息
mysql> select user, host, plugin from mysql.user;
+------------------+-----------+-----------------------+
| user | host | plugin |
+------------------+-----------+-----------------------+
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session | localhost | caching_sha2_password |
| mysql.sys | localhost | caching_sha2_password |
| root | localhost | mysql_native_password |
+------------------+-----------+-----------------------+
4 rows in set (0.00 sec)
mysql>exit

四、配置 Systemd 服务与环境变量
为了方便管理(启动/停止/重启),我们需要将其注册为系统服务。
1、编写配置文件 /etc/my.cnf
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
port = 3306
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
socket = /tmp/mysql.sock
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
default-storage-engine=INNODB
log_error = error.log

2、创建 Systemd 服务文件
新建 /usr/lib/systemd/system/mysqld.service:
[Unit]
Description=MySQL Server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=notify
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE=65535
LimitNPROC=65535
Restart=on-failure
RestartPreventExitStatus=1
TimeoutSec=0
[Install]
WantedBy=multi-user.target
3、启动服务并设置开机自启
[root@OpenEuler mysql]# systemctl daemon-reload
[root@OpenEuler mysql]# systemctl enable --now mysqld.service
[root@OpenEuler mysql]# systemctl is-active mysqld # 检查状态应为 active

4、配置环境变量
为了在任意目录下都能使用 mysql 命令:
[root@OpenEuler mysql]# vim ~/.bash_profile
# 添加以下内容
export PATH=$PATH:/usr/local/mysql/bin
[root@OpenEuler mysql]# source ~/.bash_profile

五、实验总结与不足改进
1. 实验总结
本次实验成功在 OpenEuler 22.03 操作系统上,通过通用二进制包完成了 MySQL 8.0.45 的部署。整个过程验证了二进制包安装的可行性与高效性,实现了数据库环境的独立隔离。通过手动配置 Systemd 服务,我们掌握了数据库底层启停逻辑与进程守护机制,相比一键式 Yum 安装,这种方式赋予了运维人员更高的灵活性与掌控力,为后续的多版本管理和精细化运维打下了坚实基础。
2. 不足与改进
尽管本次部署满足了基础运行需求,但在面向高并发生产环境时,仍存在以下不足,需在后续工作中进行改进:
- 性能参数未深度调优:当前
/etc/my.cnf仅配置了基础参数,未根据服务器实际物理内存调整核心参数(如innodb_buffer_pool_size、innodb_log_file_size等)。后续应结合压测结果进行专项性能调优。 - 高可用与备份机制缺失:当前为单机部署,存在单点故障风险,且未配置定时备份策略。后续需引入主从复制(Master-Slave)或 MGR 集群架构,并接入自动化备份工具。
- 安全策略需进一步收紧:当前修改了 root 密码并开放了远程访问,生产环境中应遵循最小权限原则,禁用 root 远程登录,并针对业务创建独立的受限账号。同时,需评估并配置 SELinux 策略,而非简单关闭安全模块。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)