确认系统架构为x86_64(uname -m),RPM包名中必须含el7.x86_64;按common→libs→client→server顺序安装;缺libaio则yum install libaio;SELinux需restorecon或临时setenforce 0;初始化密码在/var/log/mysqld.log中。

如何确认 CentOS 7 系统架构与 MySQL RPM 包匹配
离线安装失败,八成卡在包不兼容。CentOS 7 默认是 x86_64 架构,但有些用户从第三方渠道下载了 i686 或 aarch64 的 MySQL RPM,直接 rpm -ivh 会报 Failed dependencies 或 package architecture does not match system。
务必先执行:
uname -m
输出应为 x86_64;再核对 RPM 包名,例如 mysql-community-server-8.0.33-1.el7.x86_64.rpm 中的 el7.x86_64 必须与系统一致。MySQL 官方 Yum 源提供的 RPM 包命名规范明确,优先从 dev.mysql.com/downloads/mysql/ 下载「Red Hat Enterprise Linux / Oracle Linux」分类下标有 el7 的版本。
安装顺序不能错:依赖包必须按依赖链逐个安装
MySQL RPM 包之间有强依赖关系,mysql-community-server 依赖 mysql-community-client、mysql-community-common 和 mysql-community-libs。用 rpm -ivh *.rpm 通配安装大概率失败,因为 rpm 不自动排序。
正确做法是按以下顺序手动安装(以 8.0.33 为例):
rpm -ivh mysql-community-common-8.0.33-1.el7.x86_64.rpmrpm -ivh mysql-community-libs-8.0.33-1.el7.x86_64.rpmrpm -ivh mysql-community-client-8.0.33-1.el7.x86_64.rpmrpm -ivh mysql-community-server-8.0.33-1.el7.x86_64.rpm
如果提示缺 libaio.so.1,补装:yum install -y libaio(该包通常系统自带,但最小化安装可能未包含)。
启动失败常见原因:SELinux 干预与 data 目录权限
执行 systemctl start mysqld 报 Job for mysqld.service failed,先看日志:journalctl -u mysqld -n 50 -xe。高频原因是:
- SELinux 拦截:MySQL 默认数据目录
/var/lib/mysql被标记为default_t,而 mysqld 需要mysqld_db_t。临时关闭 SELinux(仅调试):setenforce 0;长期方案是恢复上下文:restorecon -Rv /var/lib/mysql - data 目录残留或权限错误:若之前装过 MySQL,
/var/lib/mysql可能残留旧文件且属主不是mysql:mysql。清空后重设:rm -rf /var/lib/mysql/*→chown -R mysql:mysql /var/lib/mysql - 配置文件冲突:检查
/etc/my.cnf是否存在且语法错误,可临时重命名为my.cnf.bak再试
让 mysql 命令全局可用:PATH 和 bash_completion 配置
RPM 安装后,mysql 客户端二进制文件在 /usr/bin/mysql,已默认在 PATH 中;但部分用户发现终端打 mysql 提示 command not found,大概率是切换了非 root 用户且 shell 初始化文件未加载系统 PATH。
验证方法:echo $PATH 应含 /usr/bin;若不含,检查用户 shell 配置文件(如 ~/.bashrc)是否覆盖了 PATH。不要手动追加 /usr/bin,而是确保没写类似 PATH="/home/user/bin" 这种完全赋值语句。
另外,MySQL 自带命令补全脚本:/usr/share/bash-completion/completions/mysql。如需 tab 补全,确认系统已装 bash-completion 包,并在 ~/.bashrc 加一行:source /usr/share/bash-completion/bash_completion。
初始化密码在首次启动后生成于 /var/log/mysqld.log,搜索 A temporary password 字样——这个路径和日志位置容易被忽略,很多人卡在登录环节却没查对地方。


















