一、前言

        在数据库运维与架构设计中,MySQL的安装方式多种多样,包括Yum、RPM、源码编译以及通用二进制包(Generic Binaries)等。然而,在要求高可用、易维护、版本控制严格的生产环境中,我们通常强烈推荐使用通用二进制包进行部署。

        相比于Yum或RPM安装,通用二进制包具有不可替代的优势:

  1. 环境解耦:不依赖操作系统的包管理器,避免与系统自带组件发生冲突。
  2. 版本可控:目录结构清晰,升级、回滚或并行多版本测试极其方便。
  3. 跨平台兼容:只要底层GLIBC版本满足要求,几乎可以在所有主流Linux发行版上无缝运行。
  4. 便于标准化:非常适合结合Ansible、Terraform等自动化工具进行批量交付。

        本文将从生产环境的实际需求出发,手把手带你完成MySQL通用二进制包的标准化安装与部署。内容涵盖系统参数调优、目录规划、安全初始化及核心配置,确保你的数据库在上线之初就具备高并发与高安全的基石。

二、环境准备以及软件获取

在开始安装前,我们需要明确本次部署的软硬件环境,并准备好必要的安装包。

  • 操作系统:OpenEuler 22.03 LTS
  • MySQL 版本:8.0.45
  • 安装方式:通用二进制包 (Generic Binary Tarball)

1、OpenEuler 操作系统

可以从 openEuler 官方下载中心获取最新的 ISO 镜像文件。

2、MySQL 软件包

三、安装前准备(解压、用户权限与目录初始化)

        首先,通过 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.5libtinfo.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_sizeinnodb_log_file_size 等)。后续应结合压测结果进行专项性能调优。
  • 高可用与备份机制缺失:当前为单机部署,存在单点故障风险,且未配置定时备份策略。后续需引入主从复制(Master-Slave)或 MGR 集群架构,并接入自动化备份工具。
  • 安全策略需进一步收紧:当前修改了 root 密码并开放了远程访问,生产环境中应遵循最小权限原则,禁用 root 远程登录,并针对业务创建独立的受限账号。同时,需评估并配置 SELinux 策略,而非简单关闭安全模块。
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐