原创

CentOS7安装 MySQL 8( RPM 版本)


安装前的检查工作

1、检查系统是否有mariadb或mysql正在运行

ps ajx | grep mariadb
ps ajx | grep mysql

如果有,需要先停止运行

systemctl stop mariadb.service
systemctl stop mysqld

2、检查系统中是否安装了mariadb或mysql

rpm -qa | grep mariadb
rpm -qa | grep mysql

如果有安装,则需要先卸载干净

yum -y remove 软件名(根据以上查询结果复制)

检查是否存在配置文件 /etc/my.cnf,重命名备份或者删除

3、关闭 SElinux(可选,避免权限拦截)

# 临时关闭(立即生效,重启失效)
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 架构)

  • 官方 GPG 密钥包(解决 NOKEY) mysql80-community-release-el7-7.noarch.rpm (下载地址:https://repo.mysql.com//mysql80-community-release-el7-7.noarch.rpm )

  • 系统基础依赖 libaio-0.3.109-13.el7.x86_64.rpm (下载地址:https://vault.centos.org/7.9.2009/os/x86_64/Packages/libaio-0.3.109-13.el7.x86_64.rpm )

  • 系统开发依赖 libaio-devel-0.3.109-13.el7.x86_64.rpm (下载地址:https://vault.centos.org/7.9.2009/os/x86_64/Packages/libaio-devel-0.3.109-13.el7.x86_64.rpm )

  • 客户端插件(8.0.44+必需) mysql-community-client-plugins-8.0.45-1.el7.x86_64.rpm (下载地址:https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-community-client-plugins-8.0.45-1.el7.x86_64.rpm )

  • 公共依赖包 mysql-community-common-8.0.45-1.el7.x86_64.rpm (下载地址:https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-community-common-8.0.45-1.el7.x86_64.rpm )

  • 库文件包 mysql-community-libs-8.0.45-1.el7.x86_64.rpm (下载地址:https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-community-libs-8.0.45-1.el7.x86_64.rpm )

  • 客户端工具包 mysql-community-client-8.0.45-1.el7.x86_64.rpm (下载地址:https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-community-client-8.0.45-1.el7.x86_64.rpm )

  • 服务端核心包 mysql-community-server-8.0.45-1.el7.x86_64.rpm (下载地址:https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-community-server-8.0.45-1.el7.x86_64.rpm )

以上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包文件上传到服务器的/root/mysql-rpm目录,各显神通,想怎么传就怎么传

1、进入RPM包目录

cd /root/mysql-rpm

2、导入 MySQL 官方 GPG 密钥(解决 NOKEY 警告)

# 安装密钥包
rpm -ivh mysql80-community-release-el7-7.noarch.rpm --nodeps --force
# 导入密钥到系统
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

3、安装系统依赖(libaio)

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 包(核心步骤)

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

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

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

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

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

# 步骤5:安装服务端包(最后装,依赖前所有包)
rpm -ivh mysql-community-server-8.0.45-1.el7.x86_64.rpm --nodeps --force
  • 安装成功提示:Preparing... ################################# [100%] + Updating / installing... 无报错;

  • 若报错「文件已存在」:加 --replacefiles 参数(如 rpm -ivh 包名 --nodeps --force --replacefiles)。

4、验证安装成功

[root@localhost ~]# ls /etc/my.cnf
/etc/my.cnf
[root@localhost ~]# which mysqld
/usr/sbin/mysqld
[root@localhost ~]# which mysql
/usr/bin/mysql

以上信息表示安装成功

配置编码

vim /etc/my.cnf

添加以下配置

character-set-server=utf8
default-storage-engine=innodb

配置后,重启数据库生效。

mysql相关操作

1、查看mysql运行状态

systemctl status mysqld

2、启动mysql

systemctl start mysqld

3、停止mysql

systemctl stop mysqld

4、重启mysql

systemctl restart mysqld

5、设置开机自启

systemctl enable mysqld

6、禁止开机自启

systemctl disable mysqld
  • 若启动失败:查看日志 cat /var/log/mysqld.log,常见原因是端口占用(3306)或权限不足(执行 chown -R mysql:mysql /var/lib/mysql 修复)。

修改密码

1、查看初始密码

[root@localhost ~]# grep 'temporary password' /var/log/mysqld.log
2024-04-15T01:54:50.429650Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: lQ(uaDq6v!dU

以上信息显示初始密码为:lQ(uaDq6v!dU

2、登录mysql

mysql -uroot -p

输入密码,输入的时候不会显示密码

3、修改策略(这步可跳过)

mysql> SHOW VARIABLES LIKE 'validate_password%';
+-------------------------------------------------+--------+
| Variable_name                                   | Value  |
+-------------------------------------------------+--------+
| validate_password.changed_characters_percentage | 0      |
| validate_password.check_user_name               | ON     |
| validate_password.dictionary_file               |        |
| validate_password.length                        | 8      |
| validate_password.mixed_case_count              | 1      |
| validate_password.number_count                  | 1      |
| validate_password.policy                        | MEDIUM |
| validate_password.special_char_count            | 1      |
+-------------------------------------------------+--------+
8 rows in set (0.00 sec)

设置新的策略

set global validate_password.policy=LOW;
set global validate_password.length=4;
set global validate_password.mixed_case_count=0;
set global validate_password.number_count=0;
set global validate_password.special_char_count=0;

4、修改密码

alter user 'root'@'localhost' IDENTIFIED BY 'Root@123456';

5、刷新

flush privileges;

配置远程连接及管理员权限

1、创建任意主机连接的root账号

CREATE USER 'root'@'%' IDENTIFIED BY 'Root@123456';

2、授权

grant all privileges on *.* to 'root'@'%' with grant option;

3、刷新

flush privileges;

开放防火墙端口

1、查看防火墙状态

firewall-cmd --state
或者
systemctl status firewalld

2、查看开放端口列表

firewall-cmd --list-ports

3、开放3306端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent

4、关闭防火墙(比较粗暴,除了没啥用的服务器不建议关闭)

systemctl stop firewalld
systemctl disable firewalld

5、重启防火墙

firewall-cmd --reload

常见问题解决

  1. 安装时提示「依赖检测失败:mysql-community-client-plugins >= 8.0.44」
未安装 mysql-community-client-plugins 包,回到第三步第4点,先装该包再装 libs 包。
  1. 登录时提示「ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement」
临时密码过期,重新用临时密码登录并立即改密码

mysql -u root -p临时密码 --connect-expired-password
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root@123456';
  1. 远程连接提示「1130 - Host xxx is not allowed to connect to this MySQL server」
root 未授权远程访问,回到第四步第4点重新执行授权命令,或检查防火墙/SElinux 是否关闭。
  1. 忘记 root 密码
# 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

声明:本文参考 CentOS 7 RPM 安装 MySQL 8 详细步骤,整合而成

MySQL
DB
  • 作者:一介闲人(联系作者)
  • 发表时间: 2026-02-09 16:38
  • 版权声明:原创-转载需保持署名
  • 公众号转载:请在文末添加本文链接
  • 评论