1. 环境准备与系统检查
在Rocky Linux 8.7上通过二进制方式安装MySQL 5.7之前,我们需要对系统环境进行全面检查。不同于常见的yum/dnf安装方式,二进制安装需要手动处理更多依赖和配置细节,这也是为什么许多DBA偏爱这种方式——它能提供更精细的控制权。
1.1 系统资源验证
首先确认系统版本和架构兼容性。MySQL 5.7官方二进制包要求glibc 2.12+,而Rocky Linux 8.7默认使用glibc 2.28,完全满足要求。通过以下命令验证:
bash复制# 确认系统版本
cat /etc/rocky-release
# 输出应显示:Rocky Linux release 8.7 (Green Obsidian)
# 检查CPU架构
uname -m
# x86_64表示64位系统
内存和存储方面,MySQL 5.7建议至少2GB内存。生产环境推荐:
- 专用MySQL服务器分配70%物理内存给innodb_buffer_pool
- 系统分区剩余空间不小于10GB
- 数据目录分区根据业务需求规划
bash复制# 内存检查(示例输出)
free -h
total used free shared buff/cache available
Mem: 7.8Gi 173Mi 6.4Gi 16Mi 1.2Gi 7.4Gi
Swap: 8.0Gi 0B 8.0Gi
# 磁盘空间检查
df -h /usr/local # 安装目录
df -h /var/lib/mysql # 默认数据目录
1.2 安全策略调整
二进制安装需要关闭SELinux或设置为permissive模式,否则可能导致权限问题:
bash复制# 临时设置
setenforce 0
# 永久生效需修改配置文件
sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
防火墙建议初期关闭,待安装完成后再配置规则。如果必须保持开启,需放行3306和33060端口:
bash复制systemctl stop firewalld
# 或添加规则
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --add-port=33060/tcp --permanent
firewall-cmd --reload
1.3 依赖包安装
虽然二进制包自带大部分依赖,但仍需安装基础库:
bash复制dnf install -y libaio numactl openssl-devel
关键提示:如果缺少libaio,初始化时会报"error while loading shared libraries: libaio.so.1"错误。numactl则是NUMA架构优化所需。
2. MySQL二进制安装详解
2.1 用户与目录规划
MySQL服务应使用专用系统账户运行,禁止使用root直接启动:
bash复制# 创建mysql用户组和用户
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
# -r创建系统账户,-s指定nologin shell
目录结构建议采用以下布局:
code复制/usr/local/mysql
├── bin # 可执行文件
├── data # 数据文件(需单独挂载高性能磁盘)
├── etc # 自定义配置文件
├── logs # 日志文件
│ ├── error.log
│ └── slow_query.log
└── tmp # 临时文件
创建目录并设置权限:
bash复制mkdir -p /usr/local/mysql/{data,etc,logs,tmp}
chown -R mysql:mysql /usr/local/mysql
chmod 750 /usr/local/mysql/data
2.2 获取二进制包
从MySQL官网下载对应版本的二进制包,注意选择正确的OS版本和glibc兼容性:
bash复制wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.42-linux-glibc2.12-x86_64.tar.gz
下载后务必验证文件完整性:
bash复制md5sum mysql-5.7.42-linux-glibc2.12-x86_64.tar.gz
# 对比官网提供的校验值
2.3 解压与部署
解压到/usr/local目录并创建符号链接:
bash复制tar xvf mysql-5.7.42-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
ln -s /usr/local/mysql-5.7.42-linux-glibc2.12-x86_64 /usr/local/mysql
设置目录权限:
bash复制chown -R mysql:mysql /usr/local/mysql
find /usr/local/mysql -type d -exec chmod 750 {} \;
3. 数据库初始化与配置
3.1 配置文件优化
创建自定义my.cnf配置文件,建议放在/usr/local/mysql/etc/目录下:
ini复制[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
# 重要性能参数
innodb_buffer_pool_size=4G # 建议物理内存的50-70%
innodb_log_file_size=1G # 生产环境建议1-2G
max_connections=500 # 根据应用需求调整
# 错误日志配置
log-error=/usr/local/mysql/logs/mysqld.log
pid-file=/usr/local/mysql/logs/mysqld.pid
# 二进制日志(复制需要)
server-id=1
log-bin=mysql-bin
binlog_format=ROW
expire_logs_days=7
# 其他推荐配置
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
default-storage-engine=INNODB
配置文件路径优先级:/etc/my.cnf > /etc/mysql/my.cnf > $MYSQL_HOME/my.cnf。建议删除或备份系统默认的/etc/my.cnf。
3.2 数据库初始化
使用mysqld初始化数据目录:
bash复制/usr/local/mysql/bin/mysqld --initialize \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data \
--defaults-file=/usr/local/mysql/etc/my.cnf
初始化过程会:
- 创建系统数据库(mysql, sys, performance_schema)
- 生成SSL证书和密钥文件
- 在日志中输出root临时密码
查看临时密码:
bash复制grep 'temporary password' /usr/local/mysql/logs/mysqld.log
# 输出示例:2025-11-13T06:13:22.744737Z 1 [Note] A temporary password is generated for root@localhost: /Waesrhug2Q,
3.3 启动MySQL服务
使用自带的启动脚本:
bash复制/usr/local/mysql/support-files/mysql.server start
验证服务状态:
bash复制netstat -tlnp | grep mysql
# 应看到3306和33060端口监听
ps -ef | grep mysqld
# 应显示mysqld_safe和mysqld两个进程
4. 安全加固与日常管理
4.1 修改root密码
使用临时密码首次登录后立即修改:
bash复制mysql -uroot -p
执行密码修改:
sql复制ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPassword!';
FLUSH PRIVILEGES;
4.2 创建系统服务
为了便于管理,创建systemd服务单元:
bash复制cat > /etc/systemd/system/mysqld.service <<EOF
[Unit]
Description=MySQL Server
After=network.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/etc/my.cnf
LimitNOFILE=65535
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
启用服务:
bash复制systemctl daemon-reload
systemctl enable mysqld
systemctl start mysqld
4.3 环境变量配置
将MySQL二进制路径加入系统PATH:
bash复制echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
source /etc/profile
现在可以直接使用mysql命令:
bash复制mysql -uroot -p
5. 常见问题排查
5.1 初始化失败处理
如果初始化报错,检查:
- 数据目录权限是否正确
- 磁盘空间是否充足
- SELinux是否已禁用
- 是否缺少依赖库(通过ldd检查)
bash复制# 检查依赖库
ldd /usr/local/mysql/bin/mysqld
5.2 连接问题排查
连接被拒绝可能原因:
- 防火墙阻止
- MySQL只监听本地端口
- 用户权限问题
检查绑定地址:
sql复制SHOW VARIABLES LIKE 'bind_address';
5.3 性能调优建议
生产环境关键参数调整:
ini复制innodb_flush_log_at_trx_commit=1 # ACID保障(默认)
sync_binlog=1 # 主从复制数据安全
innodb_io_capacity=2000 # SSD建议2000+
innodb_io_capacity_max=4000 # 突发负载能力
通过二进制方式安装MySQL 5.7虽然步骤较多,但能获得更灵活的配置控制和性能调优空间。我在实际运维中发现,这种安装方式特别适合需要定制化部署的场景,比如需要同时运行多个MySQL实例,或者需要精细控制内存分配的情况。