YUM 安装 MySQL 是最便捷、最符合 Linux 系统规范 的方式(适配 CentOS/RHEL 7/8/9,支持 x86_64/aarch64 架构),核心优势是 "自动处理依赖 + 系统级服务管理 + 一键升级"。以下是分阶段、带详细解释的完整步骤,覆盖 "环境准备→源配置→安装→初始化→自定义配置→远程访问" 全流程:
一、前置准备(必做:解决冲突 / 依赖)
1. 清理旧版本残留(避免安装冲突)
系统默认可能预装 MariaDB(MySQL 分支),需先卸载,否则会屏蔽 MySQL 包:
# 1. 卸载已安装的MySQL/MariaDB
yum remove -y mysql* mariadb*
# 2. 清理残留配置/数据文件
rm -rf /etc/my.cnf /var/lib/mysql /var/log/mysqld.log
# 3. 清理YUM缓存(避免源缓存干扰)
yum clean all && yum makecache
2. 安装基础依赖(避免安装 / 启动失败)
# CentOS/RHEL系通用依赖
yum install -y wget libaio-devel numactl-devel perl net-tools policycoreutils-python-utils
- 依赖作用:
libaio-devel:InnoDB 引擎异步 IO 依赖;numactl-devel:多 CPU 架构性能优化;policycoreutils-python-utils:SELinux 上下文配置工具。
3. 禁用 MariaDB 模块(CentOS 7 + 核心步骤)
CentOS 7/8/9 默认启用mariadb模块,会直接屏蔽 MySQL 官方源的包,必须禁用:
# 1. 查看模块状态(确认mariadb模块存在)
yum module list mariadb
# 2. 禁用mariadb模块(永久生效)
yum module disable -y mariadb
# 3. 重新生成YUM缓存
yum clean all && yum makecache
二、添加 MySQL 官方 YUM 源(适配架构 / 系统版本)
MySQL 官方为不同架构 / 系统版本提供专属 YUM 源,需选择对应版本(核心!避免 "无匹配包")。
1. 选择对应系统 / 架构的源包
| 系统版本 | 架构 | 源包下载命令 |
|---|---|---|
| CentOS 7 | x86_64 | wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm |
| CentOS 7 | aarch64 | 同上(下载后需手动修改源为 aarch64) |
| CentOS 8/9 | x86_64/aarch64 | wget https://dev.mysql.com/get/mysql80-community-release-el8-3.noarch.rpm(CentOS9 替换为el9) |
# 示例:CentOS 7 aarch64/x86_64通用下载
cd /tmp
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
2. 安装源包并配置架构(aarch64 必做)
# 1. 安装源包(将MySQL源添加到/etc/yum.repos.d/)
rpm -ivh mysql80-community-release-el7-3.noarch.rpm
# 2. 编辑源配置文件(仅aarch64架构需改,x86_64可跳过)
vi /etc/yum.repos.d/mysql-community.repo
-
找到
[mysql80-community]段,修改baseurl为对应架构的源(核心!):[mysql80-community] name=MySQL 8.0 Community Server # aarch64架构源 baseurl=https://repo.mysql.com/yum/mysql-8.0-community/el7/aarch64/ # x86_64架构源(注释掉aarch64,启用此行) # baseurl=https://repo.mysql.com/yum/mysql-8.0-community/el7/x86_64/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
3. 导入 GPG 密钥(避免安装时验证失败)
# 下载并导入MySQL官方GPG密钥
wget https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 -O /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
三、YUM 安装 MySQL(核心步骤)
1. 确认源生效(可选,验证架构匹配)
# 查看可用的MySQL包(显示对应架构则正常)
yum list | grep mysql-community-server | grep -E 'x86_64|aarch64'
2. 安装 MySQL 服务器 + 客户端
# 安装核心包(server=服务端,client=客户端)
yum install -y mysql-community-server mysql-community-client
- 安装成功标志:无
ERROR报错,最后输出Complete!。
四、初始化与基础配置(必做)
YUM 安装的 MySQL 会自动完成以下操作:
- 创建
mysql用户 / 组(无需手动创建); - 生成默认配置文件
/etc/my.cnf; - 初始化数据目录
/var/lib/mysql(默认); - 生成临时密码并写入
/var/log/mysqld.log。
1. 启动 MySQL 服务并设置开机自启
# 1. 启动服务
systemctl start mysqld
# 2. 设置开机自启(重启服务器后自动启动)
systemctl enable mysqld
# 3. 检查服务状态(显示Active: running则成功)
systemctl status mysqld
2. 获取初始化临时密码
MySQL 8.0 安装后会生成临时密码(仅用于首次登录),需从日志中提取:
# 提取临时密码(最后一行的"root@localhost:"后即为密码)
TEMP_PWD=$(grep "temporary password" /var/log/mysqld.log | awk '{print $NF}')
echo "MySQL临时密码:$TEMP_PWD"
- 示例输出:
MySQL临时密码:abc123!@#(包含大小写 / 数字 / 特殊字符,符合密码策略)。
3. 重置初始密码(临时密码已过期)
临时密码仅允许 "修改密码" 操作,需重置为自定义密码:
# 登录并重置密码(替换为你的临时密码和新密码)
mysql -uroot -p"$TEMP_PWD" --connect-expired-password << EOF
# 新密码需符合策略:至少8位,含大小写+数字+特殊字符(示例:MySQL@8888)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MySQL@8888';
# 刷新权限(确保修改生效)
FLUSH PRIVILEGES;
EOF
五、自定义配置(可选:修改数据目录 / 字符集等)
YUM 安装的默认配置(/etc/my.cnf)满足基础需求,若需自定义(如数据目录改/data/mysql),按以下步骤操作:
1. 准备自定义目录并赋权
# 1. 创建自定义数据目录(示例:/data/mysql)
mkdir -p /data/mysql
# 2. 赋予mysql用户权限(必须!)
chown -R mysql:mysql /data/mysql
chmod -R 755 /data/mysql
2. 修改/etc/my.cnf配置文件
vi /etc/my.cnf
-
替换为以下配置(核心:修改 datadir 为自定义路径):
[mysqld] # 自定义数据目录(替换默认的/var/lib/mysql) datadir=/data/mysql # Socket文件路径(必须和datadir同目录) socket=/data/mysql/mysql.sock # 运行用户(YUM安装已自动创建mysql用户) user=mysql # 端口 port=3306 # 错误日志(保留默认路径,也可改到/data/mysql/log) log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid # 字符集(避免中文乱码) character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci # 禁用符号链接(安全) symbolic-links=0 [client] # 客户端socket路径(和mysqld一致) socket=/data/mysql/mysql.sock default-character-set=utf8mb4
3. 迁移默认数据并重启服务
# 1. 停止MySQL服务
systemctl stop mysqld
# 2. 迁移默认数据到自定义目录
cp -rp /var/lib/mysql/* /data/mysql/
# 3. 重置目录权限(确保mysql用户可读写)
chown -R mysql:mysql /data/mysql
# 4. 配置SELinux上下文(避免拦截)
chcon -R -t mysqld_db_t /data/mysql
semanage fcontext -a -t mysqld_db_t "/data/mysql(/.*)?"
restorecon -R /data/mysql
# 5. 重启服务并验证
systemctl start mysqld
# 验证数据目录是否生效
mysql -uroot -p"MySQL@8888" -e "show variables like 'datadir';"
六、配置远程访问(可选:Navicat / 客户端连接)
1. 允许 root 用户远程连接
mysql -uroot -p"MySQL@8888" << EOF
# 将root的访问主机改为"%"(任意远程主机)
USE mysql;
UPDATE user SET host='%' WHERE user='root';
FLUSH PRIVILEGES;
# 解决Navicat兼容问题(MySQL 8.0专属)
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'MySQL@8888';
FLUSH PRIVILEGES;
EOF
2. 开放防火墙 3306 端口
# 1. 临时开放(重启防火墙失效)
firewall-cmd --add-port=3306/tcp --permanent
# 2. 重启防火墙生效
firewall-cmd --reload
# 3. 验证端口是否开放
firewall-cmd --query-port=3306/tcp
七、验证安装成功
# 1. 验证MySQL版本(显示8.0.x+对应架构)
mysql --version
# 2. 验证服务状态(Active: running)
systemctl status mysqld
# 3. 验证数据目录(输出/data/mysql则正确)
mysql -uroot -p"MySQL@8888" -e "show variables like 'datadir';"
# 4. 验证远程连接(本地测试)
mysql -uroot -p"MySQL@8888" -h 服务器IP -P 3306
八、YUM 安装的核心优势 & 常见问题
1. YUM 安装的核心优势
- 自动处理依赖:无需手动安装 libaio、openssl 等依赖;
- 系统级服务管理 :直接用
systemctl启停 / 开机自启,符合 Linux 规范; - 一键升级 :后续升级仅需
yum update mysql-community-server; - 自动创建用户 / 目录 :无需手动创建
mysql用户、/var/lib/mysql目录。
2. 常见问题排查
| 问题现象 | 原因 & 解决方法 |
|---|---|
| 安装提示 "无匹配包" | mariadb 模块未禁用 → 执行yum module disable -y mariadb+ 清理缓存 |
| 启动失败 "Permission denied" | 数据目录权限不是 mysql → 执行chown -R mysql:mysql /data/mysql |
| 远程连接超时 | 防火墙未开放 3306 → 执行firewall-cmd --add-port=3306/tcp --permanent |
| Navicat 提示 "认证插件不支持" | MySQL 8.0 默认用 caching_sha2_password → 执行ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码'; |
| 临时密码找不到 | 服务未启动 → 先执行systemctl start mysqld,再查/var/log/mysqld.log |
总结
YUM 安装 MySQL 的核心逻辑是 "官方源适配→模块化冲突解决→自动安装→系统级配置",步骤比二进制包更简洁,且无需手动管理程序目录、依赖、服务文件,是生产环境 / 快速部署的首选。