Rocky 9.6安装MySQL 8.0.32:RPM包安装完全指南
应用场景背景
在企业级Linux环境中部署MySQL 8.0.32数据库,提供高性能数据存储解决方案,满足业务系统的数据持久化需求,特别适用于对数据库稳定性与性能要求较高的生产环境。
为什么选择RPM方式安装MySQL
在Rocky Linux 9.6这样的RHEL系发行版上,使用RPM包安装MySQL有诸多优势:精确控制版本、离线安装能力、与系统包管理器深度集成,以及更好的依赖管理。相比YUM/DNF仓库安装,RPM包安装能确保安装特定版本的MySQL,非常适合需要严格版本控制的企业环境。
安装前准备
在安装MySQL之前,需要清理系统中可能存在的MariaDB或其他冲突包:
# 停止可能存在的mariadb服务
systemctl stop mariadb
# 删除可能存在的mariadb包
rpm -e --nodeps mariadb-server mariadb
# 删除旧的配置和数据目录
rm -rf /etc/my.cnf
rm -rf /var/lib/mysql
安装包下载与解压
wget https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.32-1.el9.x86_64.rpm-bundle.tar
ll mysql*
-rw-r--r-- 1 root root 811M Dec 17 2022 mysql-8.0.32-1.el9.x86_64.rpm-bundle.tar
# 解压安装包
tar -xvf mysql-8.0.32-1.el9.x86_64.rpm-bundle.tar
RPM包安装步骤
整理安装包
# 创建安装包目录
mkdir -p mysql_install_package
# 移动MySQL相关RPM包到安装目录
mv mysql-community-* ./mysql_install_package/
cd mysql_install_package/
安装MySQL组件
# 使用dnf安装所有MySQL组件
dnf install -y *.rpm
系统配置(解决Inotify限制问题)
如果在启动MySQL服务时遇到 "Failed to allocate directory watch: Too many open files" 错误,这表明系统级的inotify监控资源耗尽。在Rocky Linux 9 / RHEL 9上,MySQL 8.0启动时会尝试监控数据目录和日志目录的变化,如果系统的fs.inotify.max_user_watches设置太小,就会报这个错。
检查并增加inotify监控上限(最可能的直接原因)
这个错误通常直接对应inotify资源不足。
# 查看当前值
sysctl fs.inotify.max_user_watches
sysctl fs.inotify.max_user_instances
如果值小于524288,通常是不够的。
# 临时修改(立即生效,重启失效)
sysctl -w fs.inotify.max_user_watches=524288
sysctl -w fs.inotify.max_user_instances=524288
# 永久修改(写入配置文件)
# 创建 /etc/sysctl.d/99-mysql-inotify.conf
cat > /etc/sysctl.d/99-mysql-inotify.conf << EOF
fs.inotify.max_user_watches = 524288
fs.inotify.max_user_instances = 524288
EOF
# 然后重载配置
sysctl -p /etc/sysctl.d/99-mysql-inotify.conf
MySQL服务初始化和启动
启动MySQL服务
# 启动MySQL服务
systemctl start mysqld
# 设置开机自启动
systemctl enable mysqld
# 检查服务状态
systemctl status mysqld
获取初始密码
安装完成后,MySQL会生成一个临时密码,可以通过以下命令查看:
# 查看临时密码
grep 'temporary password' /var/log/mysqld.log
安全设置与用户管理
登录并修改密码
# 使用临时密码登录
mysql -u root -p
# 默认密码什么都不能做,因此需要修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Huawei@123';
# 修改密码策略(可选)
SHOW VARIABLES LIKE "%validate_password%";
配置远程访问权限
-- 第一步:创建 root 的远程用户 (% 代表任意主机)
-- 如果该用户已存在,可能会报错 "User already exists",此时可跳过此步直接执行第二步,或使用 ALTER USER
CREATE USER 'root'@'%' IDENTIFIED BY 'Huawei@123';
-- 【备选】如果上面报错说用户已存在,请执行这句来修改密码:
-- ALTER USER 'root'@'%' IDENTIFIED BY 'Huawei@123';
-- 第二步:授予所有权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
-- 第三步:刷新权限使其立即生效
FLUSH PRIVILEGES;
运行安全脚本
# 执行安全配置脚本
mysql_secure_installation
MySQL配置文件详解
在修改MySQL配置文件前,建议先备份原始配置文件:
# 备份原始配置文件
cp -rp /etc/my.cnf /etc/my.cnf.bak
MySQL的主要配置文件位于/etc/my.cnf,可以根据需要进行调整:
[mysqld]
secure-file-priv= NULL
max_connections=5000
max_connect_errors=1000
character_set_server=utf8mb4
wait_timeout = 300
interactive_timeout = 300
transaction-isolation=READ-COMMITTED
tmp_table_size=128M
long_query_time=10
slow_query_log=1
slow_query_log_file=/var/run/mysqld/mysql-slow.log
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
修改配置文件后,需要重启MySQL服务:
# 重启MySQL服务使配置生效
systemctl restart mysqld
关键配置参数说明
| 参数 | 含义 | 可选值 | 默认值 |
|---|---|---|---|
| datadir | 数据存储目录 | 自定义路径 | /var/lib/mysql |
| max_connections | 最大连接数 | 正整数 | 151 |
| innodb_buffer_pool_size | InnoDB缓冲池大小 | 内存大小 | 系统内存的一定比例 |
| default_authentication_plugin | 默认认证插件 | mysql_native_password/caching_sha2_password | caching_sha2_password |
| bind_address | 绑定IP地址 | IP地址或* | localhost |
验证安装
# 检查MySQL服务状态
systemctl status mysqld
# 检查端口监听
netstat -tlnp | grep 3306
# 测试连接
mysql -h localhost -u root -p
注意事项与最佳实践
-
认证插件差异:MySQL 8.0.32版本仍可使用
default_authentication_plugin=mysql_native_password配置项,这与8.4版本有所不同。 -
初始密码:首次安装后,必须从日志中获取临时密码才能登录。
-
安全设置:建议运行
mysql_secure_installation脚本进行基本安全设置。 -
服务管理:使用systemctl管理MySQL服务,而不是手动启动。
-
防火墙设置:如需远程访问,确保防火墙允许3306端口。
-
配置文件备份:修改配置文件前,务必先备份原文件。
常见问题解决
服务启动失败
检查/var/log/mysqld.log日志文件,确认错误原因。
无法登录
确认使用初始密码登录,然后立即更改密码。
权限问题
确保使用正确的用户权限启动MySQL服务。
Inotify限制错误
如遇"Failed to allocate directory watch: Too many open files"错误,需调整系统Inotify限制:
- 检查
fs.inotify.max_user_watches和fs.inotify.max_user_instances的值,若小于524288则需增加 - 修改
/etc/sysctl.d/99-mysql-inotify.conf文件,配置合适的inotify参数 - 重启系统或执行
sysctl -p使配置生效
性能优化建议
对于生产环境,建议根据服务器资源配置以下参数:
innodb_buffer_pool_size: 设置为物理内存的60%-70%max_connections: 根据并发需求调整innodb_log_file_size: 增加可提高写入性能query_cache_size: 根据读写比例调整
监控与维护
定期检查MySQL运行状态,监控以下指标:
- 连接数使用情况
- 查询性能
- 磁盘空间使用
- 慢查询日志
评论区