linux下怎么用rpm安装mysql

来源:网络学院作者:菲律宾程序员头衔:程序员
导读:本期聚焦于小伙伴创作的《linux下怎么用rpm安装mysql》,敬请观看详情。在CentOS或RedHat系Linux服务器上部署数据库时,用rpm包安装MySQL常被依赖报错卡住。其实只要按顺序装好common、libs、client、server四个核心包,就能避开大部分坑。本文先讲清rpm离线安装与yum源安装的差异,再给出一条可复用的安装命令序列,并说明如何初始化密码、开放防火墙端口以及处理libaio缺失导致的启动失败。掌握这些方法后,即便在内网无外网环境,也能在十分钟内完成MySQL的干净部署。

在Linux环境中,RedHat、CentOS、Euler等发行版默认使用rpm作为软件包管理格式。当我们需要在没有外网或者需要固定版本的场景下部署MySQL时,使用官方提供的rpm包进行安装是一种稳定且可控的方案。与yum在线安装相比,rpm安装更强调手动处理依赖关系,但也因此更适用于离线环境。

linux下怎么用rpm安装mysql

一、准备工作与rpm包下载

在开始安装之前,首先要确认系统的版本以及是否已经存在其他MySQL或MariaDB组件。RedHat系发行版常自带mariadb-libs,它会与MySQL的libs包冲突,因此需要提前卸载。可以使用rpm命令查询已安装的相关包,避免后续安装时出现文件覆盖错误。

建议到MySQL官方社区下载对应系统版本的rpm捆绑包(如mysql-8.0.xx-1.el7.x86_64.rpm-bundle.tar)。解压后会得到多个单独的rpm文件,其中核心的是common、libs、client和server。我们并不需要将全部文件都安装,只要按顺序装好这四个即可满足基础运行。

# 查看是否已安装mariadb或mysql相关包
rpm -qa | grep -i mysql
rpm -qa | grep -i mariadb

# 如有冲突包则卸载,例如
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64

# 创建临时目录并解压bundle包
mkdir /tmp/mysql_rpm && cd /tmp/mysql_rpm
tar -xvf mysql-8.0.36-1.el7.x86_64.rpm-bundle.tar
ls

二、按顺序使用rpm安装MySQL

rpm安装必须遵循依赖顺序:先装common,再装libs,接着client,最后server。如果颠倒顺序,rpm会提示缺少依赖而直接中断。很多人习惯用yum localinstall来自动解决依赖,但在纯离线环境里,手动按序rpm -ivh是最可靠的做法。

在安装server包时,系统可能会提示缺少libaio.so.1这个底层异步IO库。此时需要提前用系统盘或离线rpm装上libaio,否则mysqld启动时会出现初始化失败。下面给出一段完整的安装序列示例,假设所有rpm文件已在同一目录。

# 按顺序安装核心包
rpm -ivh mysql-community-common-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.36-1.el7.x86_64.rpm

# 若提示libaio缺失,先装依赖(离线环境需提前准备)
rpm -ivh libaio-0.3.109-13.el7.x86_64.rpm

安装完成后,可以用rpm -qa | grep mysql-community确认四个包均已写入系统数据库。此时MySQL的二进制文件、配置文件与服务脚本都已就位,但实例尚未初始化,不能直接对外提供服务。

三、初始化与启动服务

MySQL 8.0之后的rpm包不会自动初始化数据目录,需要借助mysqld --initialize生成系统表并赋予临时root密码。该密码会写入错误日志,通常位于/var/log/mysqld.log中。初始化命令执行后,必须使用mysql用户身份运行,否则权限错乱会导致启动失败。

初始化结束后,通过systemctl启动mysqld服务,并设为开机自启。若防火墙开启,还需放行3306端口,否则远程客户端无法连接。下面代码展示了初始化与启动的标准流程,以及查看临时密码的方式。

# 初始化数据目录,生成临时密码
mysqld --initialize --user=mysql

# 启动服务并设置自启
systemctl start mysqld
systemctl enable mysqld

# 从日志中获取临时root密码
grep 'temporary password' /var/log/mysqld.log

# 防火墙放行(如启用firewalld)
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

四、修改密码与基础安全配置

首次使用临时密码登录后,MySQL会强制要求修改root密码,且新密码需包含大小写字母、数字与特殊符号。修改完成后,建议执行官方提供的安全脚本mysql_secure_installation,关闭匿名用户、禁止远程root登录、删除测试库,从而降低暴露风险。

如果业务需要远程访问,可在修改密码后创建专用账号并授权,而不是直接放开root的远程权限。以下示例演示了登录、改密与建库授权的常见操作,注意所有SQL语句需以分号结束。

# 使用临时密码登录
mysql -uroot -p

# 登录后执行SQL改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass@123';

# 创建业务库与远程账号
CREATE DATABASE app_db DEFAULT CHARSET utf8mb4;
CREATE USER 'appuser'@'%' IDENTIFIED BY 'App@pass123';
GRANT ALL PRIVILEGES ON app_db.* TO 'appuser'@'%';
FLUSH PRIVILEGES;

五、常见问题与处理思路

使用rpm安装MySQL时,最常见的报错是依赖缺失与端口占用。依赖问题大多集中在libs阶段,提示需要perl或libaio;端口问题则表现为启动后本地能连、远程不能连,多为防火墙或bind-address配置限制。通过systemctl status mysqld与日志可快速定位。

另一个容易忽略的点是SELinux。在强制模式下,mysqld若使用非默认数据目录会被拒绝访问。要么将目录上下文改为mysqld_db_t,要么临时设permissive模式排查。整体来看,只要按common、libs、client、server顺序安装,提前清冲突包,rpm方式比想象中更简单可控。

问题现象可能原因解决办法
rpm -ivh server报依赖错误未先装common/libs或缺libaio按序安装并补libaio
启动后远程无法连接防火墙或bind-address限制放行3306并查配置
初始化报错权限不足未指定--user=mysql用mysql用户执行初始化

linuxrpmmysql修改时间:2026-08-08 23:18:33

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。