CentOS 7 RPM 安装 MySQL 8 详细步骤

CentOS 7 RPM 安装 MySQL 8 详细步骤(适配 8.0.44+ 版本,解决依赖/签名问题)

一、前期准备(核心:清理冲突、检查环境)
1. 确认系统版本(确保是 CentOS 7)
bash 复制代码
cat /etc/redhat-release
# 输出示例:CentOS Linux release 7.9.2009 (Core)
2. 卸载冲突软件(MariaDB/旧版 MySQL)

MySQL 与系统自带的 MariaDB 冲突,必须先卸载:

bash 复制代码
# 1. 查看已安装的 MariaDB 包
rpm -qa | grep mariadb
# 示例输出:mariadb-libs-5.5.68-1.el7.x86_64

# 2. 卸载 MariaDB(替换为上面查到的包名,多个包用空格分隔)
yum remove -y mariadb-libs-5.5.68-1.el7.x86_64
# 若提示依赖错误,加 --nodeps 强制卸载:yum remove -y --nodeps 包名

# 3. 卸载旧版 MySQL(若有)
rpm -qa | grep mysql | xargs rpm -e --nodeps  # 批量卸载

# 4. 清理残留文件(避免配置冲突)
rm -rf /var/lib/mysql /etc/my.cnf /var/log/mysqld.log /var/run/mysqld
3. 关闭 SElinux(可选,避免权限拦截)
bash 复制代码
# 临时关闭(立即生效,重启失效)
setenforce 0
# 永久关闭(重启生效)
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
二、下载所需 RPM 包(关键:匹配版本+补齐依赖)

MySQL 8.0.44+ 版本新增 mysql-community-client-plugins 依赖,需下载以下 6 个核心包 (CentOS 7 选 el7 版本,x86_64 架构):

包名(示例,版本需统一) 作用
mysql80-community-release-el7-7.noarch.rpm 官方 GPG 密钥包(解决 NOKEY)
libaio-0.3.109-13.el7.x86_64.rpm 系统基础依赖
libaio-devel-0.3.109-13.el7.x86_64.rpm 系统开发依赖
mysql-community-client-plugins-8.0.44-1.el7.x86_64.rpm 客户端插件(8.0.44+必需)
mysql-community-common-8.0.44-1.el7.x86_64.rpm 公共依赖包
mysql-community-libs-8.0.44-1.el7.x86_64.rpm 库文件包
mysql-community-client-8.0.44-1.el7.x86_64.rpm 客户端工具包
mysql-community-server-8.0.44-1.el7.x86_64.rpm 服务端核心包
下载地址:
  1. MySQL 官方 RPM 包:https://dev.mysql.com/downloads/mysql/8.0.html#downloads
    选择「Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86, 64-bit)」,下载上述 MySQL 相关包;
  2. 系统依赖包(libaio):https://vault.centos.org/7.9.2009/os/x86_64/Packages/
    搜索 libaio 下载对应 rpm;
  3. GPG 密钥包:https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
上传包到服务器:

将所有下载的 RPM 包上传到 CentOS 7 服务器的 /root/mysql-rpm 目录(手动创建):

bash 复制代码
mkdir -p /root/mysql-rpm
# 可通过 scp/ftp/U盘 上传,示例 scp 命令(本地→服务器):
# scp 本地包路径 root@服务器IP:/root/mysql-rpm/
三、正式安装(按顺序执行,解决依赖)
1. 进入 RPM 包目录
bash 复制代码
cd /root/mysql-rpm
2. 导入 MySQL 官方 GPG 密钥(解决 NOKEY 警告)
bash 复制代码
# 安装密钥包
rpm -ivh mysql80-community-release-el7-7.noarch.rpm --nodeps --force
# 导入密钥到系统
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
3. 安装系统依赖(libaio)
bash 复制代码
rpm -ivh libaio-0.3.109-13.el7.x86_64.rpm --nodeps --force
rpm -ivh libaio-devel-0.3.109-13.el7.x86_64.rpm --nodeps --force
4. 按依赖顺序安装 MySQL RPM 包(核心步骤)

必须按以下顺序安装,否则会报依赖错误!

bash 复制代码
# 步骤1:安装客户端插件包(8.0.44+ 必需)
rpm -ivh mysql-community-client-plugins-8.0.44-1.el7.x86_64.rpm --nodeps --force

# 步骤2:安装公共依赖包
rpm -ivh mysql-community-common-8.0.44-1.el7.x86_64.rpm --nodeps --force

# 步骤3:安装库文件包
rpm -ivh mysql-community-libs-8.0.44-1.el7.x86_64.rpm --nodeps --force

# 步骤4:安装客户端包
rpm -ivh mysql-community-client-8.0.44-1.el7.x86_64.rpm --nodeps --force

# 步骤5:安装服务端包(最后装,依赖前所有包)
rpm -ivh mysql-community-server-8.0.44-1.el7.x86_64.rpm --nodeps --force
  • 安装成功提示:Preparing... ################################# [100%] + Updating / installing... 无报错;
  • 若报错「文件已存在」:加 --replacefiles 参数(如 rpm -ivh 包名 --nodeps --force --replacefiles)。
四、MySQL 初始化配置(必做)
1. 启动 MySQL 服务并设置开机自启
bash 复制代码
# 启动服务
systemctl start mysqld
# 设置开机自启
systemctl enable mysqld
# 查看服务状态(active (running) 表示启动成功)
systemctl status mysqld
  • 若启动失败:查看日志 cat /var/log/mysqld.log,常见原因是端口占用(3306)或权限不足(执行 chown -R mysql:mysql /var/lib/mysql 修复)。
2. 获取初始临时密码

MySQL 8 安装后会生成随机临时密码,存于日志中:

bash 复制代码
grep "temporary password" /var/log/mysqld.log
# 示例输出:2025-05-20T10:00:00Z 1 [Note] A temporary password is generated for root@localhost: Abc123!@#
# 临时密码是最后一段:Abc123!@#
3. 登录 MySQL 并修改密码

MySQL 8 要求密码满足「大小写字母+数字+特殊字符」(否则改密码失败):

bash 复制代码
# 登录(输入上面的临时密码)
mysql -u root -p

登录后执行以下命令修改密码(示例密码 Root@123456,可自定义):

sql 复制代码
-- 修改 root 密码(必须符合复杂度)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root@123456';
-- 刷新权限
FLUSH PRIVILEGES;
4. 授权 root 远程访问(可选,生产环境建议限制 IP)

默认 root 仅允许本地访问,如需远程连接(如 Navicat):

sql 复制代码
-- 切换到 mysql 系统库
USE mysql;
-- 修改 root 允许所有 IP 访问(生产环境替换 % 为具体 IP,如 192.168.1.100)
UPDATE user SET host = '%' WHERE user = 'root';
-- 刷新权限
FLUSH PRIVILEGES;
-- 退出 MySQL
EXIT;
5. 开放防火墙 3306 端口(远程访问必需)
bash 复制代码
# 永久开放 3306 端口
firewall-cmd --permanent --add-port=3306/tcp
# 重启防火墙生效
firewall-cmd --reload
# 查看开放的端口(验证)
firewall-cmd --list-ports
五、验证安装结果
1. 本地登录验证
bash 复制代码
# 用新密码登录
mysql -u root -pRoot@123456
# 查看 MySQL 版本(输出 8.0.44 则成功)
SELECT VERSION();
# 退出
EXIT;
2. 远程连接验证(可选)

用 Navicat/MySQL Workbench 等工具,输入:

  • 主机:服务器 IP
  • 端口:3306
  • 用户名:root
  • 密码:Root@123456
    能成功连接则说明配置正常。
六、常见问题解决
1. 安装时提示「依赖检测失败:mysql-community-client-plugins >= 8.0.44」

→ 原因:未安装 mysql-community-client-plugins 包,回到第三步第4点,先装该包再装 libs 包。

2. 登录时提示「ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement」

→ 原因:临时密码过期,重新用临时密码登录并立即改密码:

bash 复制代码
mysql -u root -p临时密码 --connect-expired-password
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root@123456';
3. 远程连接提示「1130 - Host xxx is not allowed to connect to this MySQL server」

→ 原因:root 未授权远程访问,回到第四步第4点重新执行授权命令,或检查防火墙/SElinux 是否关闭。

4. 忘记 root 密码

→ 解决方案:

bash 复制代码
# 1. 停止 MySQL 服务
systemctl stop mysqld
# 2. 跳过权限验证启动
mysqld_safe --skip-grant-tables --user=mysql &
# 3. 免密登录
mysql -u root
# 4. 修改密码
USE mysql;
UPDATE user SET authentication_string = PASSWORD('Root@123456') WHERE user = 'root';
FLUSH PRIVILEGES;
EXIT;
# 5. 重启 MySQL
systemctl restart mysqld
七、MySQL 基础操作(常用)
功能 命令
启动服务 systemctl start mysqld
停止服务 systemctl stop mysqld
重启服务 systemctl restart mysqld
查看状态 systemctl status mysqld
配置文件 vi /etc/my.cnf(修改后需重启服务)
日志文件 cat /var/log/mysqld.log
数据目录 /var/lib/mysql

总结

核心要点:

  1. 8.0.44+ 版本必须安装 mysql-community-client-plugins 包,否则依赖报错;
  2. 导入 GPG 密钥可解决「NOKEY」警告;
  3. RPM 安装顺序不可乱(common → plugins → libs → client → server);
  4. 密码必须满足复杂度要求,否则无法修改。

按以上步骤执行,可稳定完成 CentOS 7 下 MySQL 8 的 RPM 安装,适配最新版本的依赖变化。

相关推荐
脸大是真的好~9 小时前
尚硅谷-mysql专项训练-数据库服务的优化-慢查询-EXPLAIN字段
数据库·mysql·性能优化
知识分享小能手9 小时前
CentOS Stream 9入门学习教程,从入门到精通,CentOS Stream 9 配置网络功能 —语法详解与实战案例(10)
网络·学习·centos
码农12138号9 小时前
Bugku HackINI 2022 Whois 详解
linux·web安全·ctf·命令执行·bugku·换行符
Joren的学习记录9 小时前
【Linux运维进阶知识】Nginx负载均衡
linux·运维·nginx
用户2190326527359 小时前
Java后端必须的Docker 部署 Redis 集群完整指南
linux·后端
胡先生不姓胡9 小时前
如何获取跨系统调用的函数调用栈
linux
一招定胜负9 小时前
navicat连接数据库&mysql常见语句及操作
数据库·mysql
阿海5749 小时前
备份mysql数据的shell脚本
mysql
sayyy10 小时前
【Docker】 安装 mysql8.0
mysql·docker
里纽斯11 小时前
RK平台Watchdog硬件看门狗验证
android·linux·rk3588·watchdog·看门狗·rk平台·wtd