在Centos7上根据官方文档安装MySQL57
一、了解
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)是一个在 Fedora
和 RedHat
以及 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 的配置文件分为两部分:main
和 repository
- 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-manager或dnf config-manager命令,您可以通过以下命令来实现,例如,禁用 8.0 系列的子存储库并启用 5.7 系列的子存储库
1 | sudo yum-config-manager --disable mysql80-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 | firewall-cmd --add-port=3306/tcp --permanent |
出现错误
解决方案可以看:被 MySQL 自己拒绝连接
1 | GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'MyPassword-2021' WITH GRANT OPTION; |
再次测试连接,连接成功!