1. 红帽Linux系统安装MySQL全流程解析
作为企业级Linux发行版的代表,红帽系统(RHEL)在服务器领域占据重要地位。而MySQL作为最流行的开源关系型数据库之一,其安装部署是每个系统管理员的必修课。不同于桌面版Linux的图形化安装,红帽系统上的MySQL部署需要掌握命令行操作的精髓。我在实际运维中经历过从RHEL 6到RHEL 8多个版本的MySQL部署,本文将分享最稳妥的安装方案。
红帽系列(包括CentOS、Fedora等衍生版)安装MySQL主要面临三个关键选择:官方仓库版本、MySQL社区版(MySQL Community Server)和MariaDB分支。对于生产环境,我强烈建议使用MySQL官方提供的rpm包,这能确保获得最新的安全补丁和完整功能支持。以下操作以RHEL 8为例,同样适用于CentOS 8等兼容系统。
重要提示:红帽从RHEL 7开始默认使用MariaDB替代MySQL,直接使用系统仓库安装的"mysql"实际上是MariaDB。如需官方MySQL需额外配置仓库。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与仓库配置
2.1 系统基础检查
在开始安装前,需要确认系统环境是否符合要求:
bash复制# 查看系统版本
cat /etc/redhat-release
# 检查内存和存储(MySQL推荐至少2GB内存)
free -h
df -h
# 确认SELinux状态(建议保持Enforcing模式)
getenforce
对于最小化安装的红帽系统,需确保基础工具链完整:
bash复制sudo yum install -y wget curl vim
2.2 配置MySQL官方仓库
MySQL为红帽系统提供专属仓库,比直接下载rpm包更利于后续更新管理:
- 访问MySQL官网获取社区版仓库配置:
bash复制sudo wget https://dev.mysql.com/get/mysql80-community-release-el8-4.noarch.rpm
- 安装仓库并验证:
bash复制sudo rpm -ivh mysql80-community-release-el8-4.noarch.rpm
# 检查仓库文件
ls /etc/yum.repos.d/mysql-community*
- 默认启用的是最新稳定版(当前为8.0),如需切换版本:
bash复制sudo yum-config-manager --disable mysql80-community
sudo yum-config-manager --enable mysql57-community
生产环境建议使用长期支持版(LTS),如5.7或8.0系列。MySQL 8.0在性能和管理上有显著改进,但部分旧应用可能存在兼容性问题。
3. MySQL安装与初始化
3.1 执行安装命令
通过配置好的仓库安装MySQL服务端:
bash复制sudo yum install -y mysql-community-server
这个命令会自动安装以下组件:
- mysql-community-server:主服务程序
- mysql-community-client:客户端工具
- mysql-community-libs:共享库文件
- mysql-community-common:公共文件
安装完成后检查版本:
bash复制mysqld --version
3.2 安全初始化配置
MySQL 5.7及以上版本默认会生成临时root密码,需执行安全初始化:
bash复制sudo systemctl start mysqld
# 查看临时密码(红帽8日志位置)
sudo grep 'temporary password' /var/log/mysqld.log
执行安全向导:
bash复制sudo mysql_secure_installation
这个交互式脚本会引导完成以下设置:
- 修改root密码(需满足默认密码策略)
- 移除匿名用户
- 禁止root远程登录
- 移除测试数据库
- 重新加载权限表
密码策略修改:如果觉得默认策略太严格,可在登录后调整:
sql复制SET GLOBAL validate_password.policy=LOW;
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
4. 服务管理与基本配置
4.1 系统服务控制
红帽使用systemd管理MySQL服务:
bash复制# 启动服务
sudo systemctl start mysqld
# 设置开机自启
sudo systemctl enable mysqld
# 检查状态
sudo systemctl status mysqld
4.2 防火墙配置
允许MySQL默认端口(3306)的访问:
bash复制sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
sudo firewall-cmd --reload
如需修改默认端口,编辑配置文件:
bash复制sudo vim /etc/my.cnf
添加:
code复制[mysqld]
port=3307
4.3 基础性能调优
根据服务器配置调整内存参数(以4GB内存为例):
sql复制SET GLOBAL innodb_buffer_pool_size=1G;
SET GLOBAL key_buffer_size=256M;
SET GLOBAL query_cache_size=0; # MySQL 8.0已移除查询缓存
使设置永久生效:
bash复制sudo vim /etc/my.cnf.d/mysql-server.cnf
添加:
code复制[mysqld]
innodb_buffer_pool_size=1G
key_buffer_size=256M
5. 常见问题与解决方案
5.1 依赖冲突问题
在已安装MariaDB的系统上可能出现冲突,解决方法:
bash复制# 列出已安装的MariaDB包
rpm -qa | grep mariadb
# 移除冲突包(谨慎操作)
sudo yum remove mariadb-libs
5.2 字符集配置
确保使用UTF-8编码避免中文乱码:
sql复制SHOW VARIABLES LIKE 'character_set%';
修改配置文件:
bash复制sudo vim /etc/my.cnf.d/mysql-server.cnf
添加:
code复制[client]
default-character-set=utf8mb4
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
5.3 远程连接配置
如需允许远程访问,创建用户并授权:
sql复制CREATE USER 'remote'@'%' IDENTIFIED BY '安全密码';
GRANT ALL PRIVILEGES ON *.* TO 'remote'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
然后在配置文件中注释掉:
code复制# bind-address=127.0.0.1
6. 高级配置建议
6.1 数据目录迁移
默认数据目录在/var/lib/mysql,如需迁移到独立存储:
bash复制sudo systemctl stop mysqld
sudo rsync -av /var/lib/mysql /new/location
sudo chown -R mysql:mysql /new/location
修改配置文件:
code复制[mysqld]
datadir=/new/location/mysql
socket=/new/location/mysql/mysql.sock
同时更新selinux上下文:
bash复制sudo semanage fcontext -a -t mysqld_db_t "/new/location/mysql(/.*)?"
sudo restorecon -Rv /new/location/mysql
6.2 备份与恢复
使用mysqldump进行逻辑备份:
bash复制# 全库备份
mysqldump -u root -p --all-databases > backup.sql
# 单库备份
mysqldump -u root -p 数据库名 > db_backup.sql
恢复数据:
bash复制mysql -u root -p < backup.sql
对于大型数据库,建议配置定时任务进行自动备份。
6.3 监控与优化
安装MySQL工作台进行可视化监控:
bash复制sudo yum install -y mysql-workbench-community
关键性能监控命令:
sql复制-- 查看连接数
SHOW STATUS LIKE 'Threads_connected';
-- 查看慢查询
SHOW VARIABLES LIKE 'slow_query%';
-- 查看表状态
ANALYZE TABLE 表名;
7. 版本升级策略
从MySQL 5.7升级到8.0的注意事项:
- 先备份所有数据
- 检查兼容性问题:
bash复制mysqlcheck -u root -p --all-databases --check-upgrade
- 停止服务并卸载旧版
- 安装新版并运行mysql_upgrade
- 验证数据完整性
特别注意:MySQL 8.0默认身份验证插件改为caching_sha2_password,旧客户端可能需要更新驱动或修改认证方式。
