1. RedHat 8环境下MySQL 9.1企业版安装全指南
作为数据库管理员,在RedHat 8系统上部署最新版MySQL企业版是日常工作中的常见需求。MySQL 9.1作为当前最新的企业级数据库版本,在性能优化、安全增强和功能扩展方面都有显著提升。本文将详细介绍从下载到配置的完整流程,包含我在实际部署过程中积累的实用技巧和避坑经验。
2. 准备工作与环境检查
2.1 系统环境确认
在开始安装前,必须确保系统环境符合MySQL 9.1的要求:
bash复制# 检查RedHat版本
cat /etc/redhat-release
# 检查CPU架构
uname -m
# 检查内存和存储空间
free -h
df -h
注意:MySQL 9.1企业版要求RedHat 8或兼容系统(如CentOS 8),x86_64架构,建议至少2GB内存和5GB可用磁盘空间。
2.2 解决RedHat 8的yum源问题
由于RedHat 8默认需要订阅才能使用官方yum源,我们可以采用以下替代方案:
bash复制# 备份原有repo文件
sudo mkdir /etc/yum.repos.d/backup
sudo mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/
# 配置CentOS 8的Base源
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
# 清理并重建缓存
sudo yum clean all
sudo yum makecache
这个方案使用阿里云镜像站的CentOS 8仓库,经测试与RedHat 8兼容性良好。如果遇到依赖问题,可以尝试添加EPEL源:
bash复制sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
3. MySQL 9.1企业版安装详解
3.1 获取安装包
访问Oracle官网下载MySQL企业版bundle包时,需要注意:
- 必须注册Oracle账户才能下载企业版
- 选择正确的版本:mysql-enterprise-9.1.0_el8_x86_64_bundle.tar
- 下载后验证文件完整性:
bash复制sha256sum mysql-enterprise-9.1.0_el8_x86_64_bundle.tar
3.2 解压与安装顺序
解压bundle包后,会得到多个rpm文件。安装顺序非常关键,错误的顺序可能导致依赖问题:
bash复制tar -xvf mysql-enterprise-9.1.0_el8_x86_64_bundle.tar
以下是经过验证的正确安装顺序及每个组件的作用:
| 组件名称 | 功能说明 | 是否必需 |
|---|---|---|
| mysql-commercial-icu-data-files | Unicode支持数据文件 | 是 |
| mysql-commercial-common | 公共文件 | 是 |
| mysql-commercial-client-plugins | 客户端插件 | 是 |
| mysql-commercial-libs | 共享库 | 是 |
| mysql-commercial-client | 客户端工具 | 是 |
| mysql-commercial-backup | 备份工具 | 可选 |
| mysql-connector-c++-commercial | C++连接器 | 可选 |
| mysql-connector-j-commercial | JDBC驱动 | 可选 |
| mysql-connector-odbc-commercial | ODBC驱动 | 可选 |
| mysql-commercial-server | 服务器主程序 | 是 |
执行安装命令(使用--nogpgcheck跳过GPG验证):
bash复制sudo yum install mysql-commercial-*.rpm --nogpgcheck
经验:在实际部署中,我建议先安装必需组件,确认服务正常运行后再按需安装其他组件。这样可以减少初始安装的复杂度。
3.3 服务初始化与配置
安装完成后,启动MySQL服务前需要检查配置文件:
bash复制# 检查默认配置文件位置
sudo ls -l /etc/my.cnf /etc/mysql/
# 初始化数据目录
sudo mysqld --initialize --user=mysql
启动服务并检查状态:
bash复制sudo systemctl start mysqld
sudo systemctl enable mysqld
sudo systemctl status mysqld
4. 安全配置与密码管理
4.1 获取初始密码
MySQL 9.1安装后会生成随机初始密码,查看方法:
bash复制sudo grep 'temporary password' /var/log/mysqld.log
输出示例:
code复制2023-07-15T03:12:34.123456Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Abc123!@#XyZ
4.2 修改root密码
使用初始密码登录后立即修改密码:
bash复制mysql -uroot -p
执行密码修改(MySQL 9.1默认启用强密码策略):
sql复制ALTER USER 'root'@'localhost' IDENTIFIED BY 'Winner@123456';
密码策略要求:至少12字符,包含大小写字母、数字和特殊字符
4.3 安全加固建议
执行MySQL安全脚本进行基础加固:
bash复制sudo mysql_secure_installation
建议配置:
- 移除匿名用户
- 禁止root远程登录
- 移除测试数据库
- 重载权限表
5. JDBC驱动安装与配置
5.1 选择合适的JDBC驱动
MySQL 9.1对应的JDBC驱动版本应为8.0.x或更高。下载方式:
- 官网下载:https://dev.mysql.com/downloads/connector/j/
- 直接使用yum安装已下载的rpm包:
bash复制sudo yum install mysql-connector-j-commercial-9.1.0-1.1.el8.noarch.rpm
5.2 配置Java应用连接
驱动安装后,JAR文件通常位于:
code复制/usr/share/java/mysql-connector-j-commercial-9.1.0.jar
在Java应用中配置连接字符串示例:
java复制String url = "jdbc:mysql://localhost:3306/dbname?useSSL=false&serverTimezone=UTC";
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection(url, "username", "password");
6. 常见问题与解决方案
6.1 安装依赖问题
错误现象:
code复制Error: Package: mysql-commercial-libs-9.1.0-1.1.el8.x86_64
Requires: libssl.so.1.1()(64bit)
解决方案:
bash复制sudo yum install openssl1.1
6.2 服务启动失败排查
检查错误日志:
bash复制sudo tail -n 50 /var/log/mysqld.log
常见问题:
- 端口冲突:确保3306端口未被占用
- 权限问题:检查/var/lib/mysql目录权限
- 配置错误:验证/etc/my.cnf配置
6.3 性能调优建议
初始配置调整(/etc/my.cnf):
ini复制[mysqld]
innodb_buffer_pool_size = 1G # 建议为物理内存的50-70%
innodb_log_file_size = 256M
max_connections = 200
query_cache_size = 0 # MySQL 8.0+已移除查询缓存
7. 运维管理基础
7.1 日常维护命令
bash复制# 备份数据库
sudo mysqldump -u root -p --all-databases > full_backup.sql
# 查看运行进程
mysqladmin -u root -p processlist
# 监控性能
mysql -u root -p -e "SHOW ENGINE INNODB STATUS\G"
7.2 升级注意事项
MySQL企业版升级需要遵循官方指导,一般步骤:
- 备份所有数据
- 停止MySQL服务
- 安装新版本rpm包
- 运行mysql_upgrade
- 启动服务并验证
8. 安全最佳实践
- 定期审计用户权限:
sql复制SELECT user, host FROM mysql.user;
SHOW GRANTS FOR 'username'@'host';
- 启用SSL加密连接:
bash复制sudo mysql_ssl_rsa_setup --uid=mysql
- 配置防火墙规则:
bash复制sudo firewall-cmd --permanent --add-service=mysql
sudo firewall-cmd --reload
在实际生产环境中部署MySQL 9.1时,我发现合理配置innodb_flush_log_at_trx_commit参数对性能影响很大。对于允许少量数据丢失的非关键业务,可以设置为2以获得更好的性能;而对于金融等关键业务,必须保持默认值1确保数据安全。