一、了解

1、RPM 简介

RPM 是 Red-Hat Package Manager(红帽软件包管理器)的缩写,原本是 Red Hat Linux 发行版专门用来管理 Linux 各项套件的程序,由于它遵循 GPL 规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。

使用 rpm 我们可以方便的进行软件的安装、查询、卸载、升级等工作。但是rpm 软件包之间的依赖性问题往往会很繁琐,尤其是软件由多个 rpm 包组成时,此时 yum 就有用武之地了。

2、rpm 执行安装包

Linux 常见软件包分为两种,分别是源代码包(Source Code)、二进制包(Binary Code)

源代码包是没有经过编译的包,需要经过 RPM 自动编译、安装,(编译时一般需要 GCC、C++编译器环境编译)

二进制包无需编译,可以直接安装使用。

通常而言,可以通过后缀简单区别源码包和二进制包,例如 .tar.gz.zip.rar 结尾的包通常称之为源码包,以 .rpm 结尾的软件包称之为二进制包。

常用命令组合

  • ivh:安装显示安装进度–install–verbose–hash
  • Uvh:升级软件包–Update;
  • qpl:列出 RPM 软件包内的文件信息[Query Package list];
  • qpi:列出 RPM 软件包的描述信息[Query Package install package(s)];
  • qf:查找指定文件属于哪个 RPM 软件包[Query File];
  • Va:校验所有的 RPM 软件包,查找丢失的文件[View Lost];
  • e:删除包

3、yum 简介

Yum(全称为 Yellow dog Updater, Modified)是一个在 FedoraRedHat 以及 CentOS 中的 Shell 前端软件包管理器。

基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

Yum 的理念是使用一个中心仓库(repository)管理一部分甚至一个 distribution 的应用程序相互关系,根据计算出来的软件依赖关系进行相关的升级、安装、删除等等操作,减少了 Linux 用户一直头痛的 dependencies 的问题。这一点上,yum 和 apt 相同。apt 原为 debian 的 deb 类型软件管理所使用,但是现在也能用到 RedHat 门下的RPM了。

Yum 可以同时配置多个资源库(Repository),自动解决增加或删除 RPM 包时遇到的依赖性问题,保持与 RPM数据库的一致性。

4、yum 配置

看系统默认安装的 yum

1
rpm -qa|grep yum

yum 的配置文件分为两部分:mainrepository

  • main 部分定义了全局配置选项,位于 /etc/yum.conf 中。
  • repository 部分定义了每个源/服务器的具体配置,位于 /etc/yum.repo.d 目录下的各文件中。

5、MySql-Server 和 MySql-Client

Mysql-Server:包含存储数据的一系列机制、处理方法的集成,Server 可以对数据进行操作,处理 Client 请求。

MySql-Client,客户端,面向用户,提供一系列工具为用户所用,比如远程连接 Server, 发送 SQL 命令给 server ,这些工具包括通常写的 sql 在内都要通过 Server 的编译才能操作物理数据。

简单来说:Client 用来发送 SQL 指令,比如我用 Navicat 去连接数据库,Navicat 就是 Client。Server 根据发送来的 SQL 操作数据库。

mysql 官网下载 MySql-Server,默认就包含了 Client 客户端。

6、关于 MariaDB

MariaDB 数据库管理系统是 MySQL 的一个分支,主要由开源社区在维护,采用 GPL 授权许可。开发这个分支的原因之一是:甲骨文公司收购了 MySQL 后,有将 MySQL 闭源的潜在风险,因此社区采用分支的方式来避开这个风险。

以前版本的 CentOS 都是使用 MySQL 作为数据库的,而从 CentOS 7 开始内部集成了 MariaDB,安装 MySQL 的话会和 MariaDB 的文件冲突,所以需要先卸载掉 MariaDB。

使用官方的存储库不需要,会自动替代

Replaced:
mariadb-libs.x86_64 1:5.5.68-1.el7

二、官方 repo 源安装

由于 CentOS7 中默认的 yum 源中没有 mysql,需要到 mysql 的官网下载 yum repo 配置文件

官方文档:A Quick Guide to Using the MySQL Yum Repository

官方下载地址:MySQL Community Downloads

关于选择的下载版本

MySQL Yum 存储库支持以下 Linux 发行版:

基于 EL6、EL7、EL8 的平台(例如 Oracle Linux、Red Hat Enterprise Linux、CentOS 对应版本)

1、将 MySQL Yum 存储库添加到系统的存储库列表中

1
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

使用以下命令安装下载的发行版软件包,替换 platform-and-version-specific-package-name 为已下载包的名称:

1
sudo rpm -Uvh platform-and-version-specific-package-name.rpm

比如我的就是

1
sudo rpm -Uvh mysql80-community-release-el7-3.noarch.rpm

2、选择 Release Series

使用 MySQL Yum 存储库时,默认选择 MySQL 的最新 GA 版本进行安装

在 MySQL Yum 存储库 ( https://repo.mysql.com/yum/ ) 中,MySQL 社区服务器的不同版本系列托管在不同的子存储库中。最新 GA 系列(目前为 MySQL 8.0)的子仓库默认开启,其他所有系列(例如 MySQL 5.7 系列)的子仓库默认关闭。使用此命令查看 MySQL Yum 存储库中的所有子存储库,并查看哪些是启用或禁用的

1
yum repolist all | grep mysql

要安装最新 GA 系列的最新版本,无需配置。

要安装最新 GA 系列以外的特定系列的最新版本,请在运行安装命令之前禁用最新 GA 系列的子存储库启用特定系列的子存储库。如果您的平台支持 yum-config-managerdnf config-manager命令,您可以通过以下命令来实现,例如,禁用 8.0 系列的子存储库并启用 5.7 系列的子存储库

1
2
sudo yum-config-manager --disable mysql80-community
sudo yum-config-manager --enable mysql57-community

开启之后再次查看,发现 mysql57 变为 enabled 了。

3、安装 MySQL

1
sudo yum install mysql-community-server

结束以后查看

1
rpm -qa | grep mysql

第一个 mysql80 不用管,那是上面第一步下载的发行版软件包

如果安装时遇到报错

源 “MySQL 5.7 Community Server” 的 GPG 密钥已安装,但是不适用于此软件包。请检查源的公钥 URL 是否配置正确。

失败的软件包是:mysql-community-client-5.7.39-1.el7.x86_64
GPG 密钥配置为:file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

解决方案

1
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

4、启动 MySQL Server

1
systemctl start mysqld

检查 MySQL 服务器的状态

1
systemctl status mysqld

在 MySQL Server 第一次启动时,MySQL Server 会进行初始化,默认创建一个 root 账户,使用命令查看密码

1
sudo grep 'temporary password' /var/log/mysqld.log

通过临时密码登录

1
mysql -u root -p

更改 root 密码

1
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyPassword-2021';

mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘MyPassword-2021’;
Query OK, 0 rows affected (0.00 sec)

要求密码至少包含 1 个大写字母、1 个小写字母、1 个数字和 1 个特殊字符,并且密码总长度至少为 8 个字符。

5、测试连接

使用 Navicat 测试连接,前提是防火墙 3306 端口已经开启

1
2
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload

出现错误

解决方案可以看:被 MySQL 自己拒绝连接

1
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'MyPassword-2021' WITH GRANT OPTION;

再次测试连接,连接成功!

6、修改字符集

见:使用国内镜像源安装 MySQL57-修改字符集