人生处处皆学问,工作也是如此!过去不止一次在Linux上安装MySQL,可以说轻车熟路,但是写篇文章总结一下,发现有很多细节值得学习!

安装包选择

为什么用rpm?

在Linux系列上安装软件一般有源码编译安装、rpm(或者dpkg)、yum等方式,优劣主要体现在是否需要网络环境、是否能自动检测依赖,升级和卸载是否方便等。作为非运维人员,也需基本了解。

源码安装支持离线,但即使可以自动创建 Makefile等文件简化安装,整个过程也比较复杂,升级和卸载更麻烦。针对一些没有官方释出的软件,只能选择这种方式。

yum方式可以自动监测依赖,并且安装过程中可以将安装信息写入系统的软件管理程序,升级卸载都比较方便。缺点是多数情况下需要良好的网络环境,尤其是一些没有国内镜像的软件,速度感人。(事实上,有些情况也可以在rpm包所在的目录下以离线方式使用yum,前提是各种依赖都在本地具备)。

rpm相当于官方编译好的安装包,支持离线,能够检测依赖,但部分软件没有rpm包。所以说一定程度上rpm具备了上述两种方式的有点。

实际情况下,要根据具体的环境选择,一般来说rpm优先于源码。

本次安装环境:

Centos7.8 2003 (最小安装,root权限)

mysql 社区版8.0.16

此处选择上传已经下载好的官方打包bundle文件,也可以在官方网站分别下载未打包的多个文件。

mysql-8.0.16-2.el7.x86_64.rpm-bundle.tar

或者在线下载(也可以在本地直接将wget后面的地址复制到浏览器地址栏,将自动开始下载)

wget   https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.16-2.el7.x86_64.rpm-bundle.tar

解压

注意此处解压命令是,-xvf 没有z

tar -xvf    mysql-8.0.16-2.el7.x86_64.rpm-bundle.tar

解压后包含8个文件,

安装前环境检测

检查

在MySQL被收购后,MySQL最初的作者担心MySQL存在闭源的风险,在MySQL的分支上开发了mariadb。后来一些Linux分发版就将mariadb作为系统默认安装的数据库系统,理论上mariadb兼容MySQL,甚至某些方面性能更好。(当然,我没有测试过)

rpm -qa | grep -i mariadb

可能结果显示

mariadb-libs-5.5.65-1.el7.x86_64

去除依赖

rpm -ev  --nodeps mariadb-libs-5.5.65-1.el7.x86_64

安装

安装顺序

应当按照common–>libs–>client–>server的顺序安装,否则安装过程会提醒依赖顺序,其他的为非必须安装包。

rpm -ivh mysql-community-common-8.0.16-2.el7.x86_64.rpm

rpm -ivh mysql-community-libs-8.0.16-2.el7.x86_64.rpm

rpm -ivh mysql-community-client-8.0.16-2.el7.x86_64.rpm

rpm -ivh mysql-community-server-8.0.16-2.el7.x86_64.rpm

正如文章开始提到的,也可以在解压后的安装包文件下使用yum命令代替rpm(非必须)

yum install mysql-community-common-8.0.16-2.el7.x86_64.rpm
...

启动与修改密码

启动

 systemctl start mysqld

查看状态

systemctl status mysqld

查看初始随机密码

 cat /var/log/mysqld.log | grep password

结果类似下面内容,则初始密码为tC0;+kB?BqCg

2020-09-02T05:30:06.739311Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: tC0;+kB?BqCg

使用root角色登录

mysql -u root -p

粘贴或输入初始密码,注意,Linux为了安全,MySQL命令行上可能没有反应或者****,但密码已经输入

修改密码

第一次使用随机生成的密码登录后必须修改密码,否则无法进行其他操作。

密码要求

按照MySQL8.0默认的密码组件,此时的密码要求是必须包含数字,大小写字母,特殊字符,且长度不低于8位,否则会提示密码不符合规则。建议按照这种方式设置,如果想将密码设置成123456这种简单形式(养成良好习惯,不建议),请看本文最后一部分,密码问题。

以123456为密码测试

ALTER user 'root'@'localhost' IDENTIFIED BY '123456';

此处我们将密码设置为Root.123456 注意R大写,t后有英文句号。

ALTER user 'root'@'localhost' IDENTIFIED BY 'Root.123456';

开放远程登录权限

此时只能以root角色登录,同样出于安全,MySQL的root角色只能在本地登录,正规的做法应当是用root权限分配其他不同角色供远程登录。

但这里还是强行开启root角色的远程登录权限,否则再写角色分配相关的内容,文章就成了太长不看系列了。

开放权限的本质是在数据库mysql中修改user表的host属性,使其可以被本地之外的IP连接

use mysql;

select host,user from user;

update user set host='%' where user ='root';

执行以上语句之后在执行刷新权限:

flush privileges;

开放防火墙端口

开启root远程登录权限后,还无法直接被外界连接,因为MySQL的端口号3306在Linux中默认关闭的。

注意:使用阿里云等云服务器还需要在控制台中安全组策略打开端口,此处省略。

查询3306端口是否开启

 firewall-cmd --query-port=3306/tcp

开启3306

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

重新加载防火墙

firewall-cmd --reload

此时我们的程序已经可以直接连接MySQL了。

配置文件更改(非必须)

要修改mysql数据和日志存放位置等信息,配置文件是/etc/my.cnf,直接修改保存位置。

vim /etc/my.cnf

以下内容非必须。

Navicat等工具远程连接问题(非必须)

在使用Navicat或者Sqlyog工具时,较新的版本已经可以直接连接,所以开始此步骤前可以使用Navicat测试连接是否成功。

但旧版本Navicat连接mysql8.0时,可能无法与mysql的加密规则匹配,导致连接失败。此处的加密规则说的是对你的密码进行加密保存时采用的算法。

更改mysql的加密规则

查看加密规则

show variables like "default_authentication%";

结果可能为

修改规则

alter user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';

此时使用Navicat连接成功。

密码问题(非必须)

修改密码规则

注意:若依照前面说的规则设置复杂的密码,这一步骤直接可以省略。

再次啰嗦,建议将密码设置为复杂程度较高的(前提是不要忘记)。若仍然要将密码设置为简单的,往下看。

登录MySQL

查看密码规则要求(正常情况下已经默认安装了密码相关组件)

SHOW VARIABLES LIKE 'validate_password.%';

validate_password.policy的值

可以使用数字值0、1、2或相应的符号值LOW,MEDIUM,STRONG来指定validate_password.policy值

Policy Tests Performed
0 or LOW Length
1 or MEDIUM Length; numeric, lowercase/uppercase, and special characters
2 or STRONG Length; numeric, lowercase/uppercase, and special characters; dictionary file

如果想使用类似于123456形式的简单密码,需要更改密码规则和密码长度

mysql8.0及以后的版本

set global validate_password.policy=0;

set global validate_password.length=1;

实际上,密码长度即使设为1,其最小长度也不会小于下面函数的值,即默认长度始终不会小于4

validate_password.number_count+ validate_password.special_char_count
+ (2 * validate_password.mixed_case_count)

5.7及以前版本

set global validate_password_policy=0;

set global validate_password_length=1;

更改密码

此处密码改为123456

ALTER user 'root'@'localhost' IDENTIFIED BY '123456';

最后

比起整个流水化的安装过程,其实更值得深思的是,仅仅一个密码设置和保存,MySQL就提供了不同的组件,设置了不同的规则和策略,尽最大程度去平衡方便和安全,某种意义上说,也是值得我们学习的匠心吧!

Centos7安装MySQL8.0(RPM方式)的更多相关文章

  1. Centos7安装MySQL8.0

    请到这个地址看:https://www.cnblogs.com/kevingrace/p/10482469.html Centos7安装MySQL8.0 - 操作手册 一.yum安装方式: 卸载之前版 ...

  2. <亲测>CentOS7 安装mysql8.0(YUM方式)

    CentOS7 安装mysql(YUM方式)   1.下载mysql源安装包 shell> wget http://dev.mysql.com/get/mysql80-community-rel ...

  3. Centos7安装MySQL8.0 - 操作手册

    MySQL 8 正式版 8.0.11 已发布,官方表示 MySQL 8 要比 MySQL 5.7 快 2 倍,还带来了大量的改进和更快的性能! 一.  Mysql8.0版本相比之前版本的一些特性 1) ...

  4. CentOS7安装MySQL8.0小计

    之前讲配置文件和权限的时候有很多MySQL8的知识,有同志说安装不太一样,希望发个文,我这边简单演示一下 1.环境安装 下载MySQL提供的CentOS7的yum源 官方文档:<https:// ...

  5. CentOS7安装mysql8.0编译报错集合

    以下都是我安装mysql8.0遇到的一些报错和解决方法 1.does not appear to contain CMakeLists.txt. 原因:mysql下载的源码包不对 解决方法:下载正确的 ...

  6. Centos7 安装mysql-8.0.13(rpm)

    yum or rpm? yum安装方式很方便,但是下载mysql的时候从官网下载,速度较慢. rpm安装方式可以从国内镜像下载mysql的rpm包,比较快.rpm也适合离线安装. 环境说明 操作系统: ...

  7. Centos7 安装mysql-8.0.18(rpm)

    1.前言 当前MySQL最新版本:8.0.18 (听说比5.7快2倍)官方之前表示:MySQL 8.0 正式版 8.0.18 已发布,MySQL 8 要比 MySQL 5.7 快 2 倍,还带来了大量 ...

  8. CentOS7安装MySQL8.0图文教程

    1.下载 MySQL 所需要的安装包 网址:https://dev.mysql.com/downloads/mysql/ 2.Select Operating System: 选择 Red Hat , ...

  9. CentOS7安装mysql8.0.12

    一.配置yum源 下载mysql源安装包 在MySQL官网中下载YUM源rpm安装包:http://dev.mysql.com/downloads/repo/yum/ 复制下载链接:https://d ...

随机推荐

  1. Unity中利用柏林噪声(perlinnoise)制作摇摆效果

    perlinnoise是unity中Mathf下的一个函数,需要两个float参数x和y进行采样,返回一个0-1的float型. 项目里经常要随机摇摆某些东西,比如摄像机,某个随机运动的目标等等,都可 ...

  2. DHCP和NAT

    DHCP(dynamic host configuration protocol)用于内网动态分配IP,是一种基于UDP的应用层协议. NAT(net address translation)用于内网 ...

  3. 6 年前,只会 JSP 和 Servlet 就可以找到工作

    这篇文章在去年就已经构思了,不过一直都没有整理出来,今天终于完成了这篇文章,所以发上来给大家看一看,都是一些个人的小感慨,我的观点可能不是非常的完善,大家也可以一起讨论. 找工作之难,难于上青天 五六 ...

  4. 小程序开发-小程序tabBar不显示的原因分析

    在尝试小程序开发时,tabBar这个是个非常常见的组件,但是今天在进行开发时,设置了TabBarb并没有显示,被这个问题困扰了近半小时,现在将排查问题后所得到的经验记录下来. 首先 如果tabBar不 ...

  5. -1>1?! unsigned int的世界不简单

    编程语言提供了很多的基本数据类型,比如char,int,float,double等等.在C和C++的世界中,还有一种类型,叫做无符号数据,修饰符位unsigned,比如今天要说的unsigned in ...

  6. 给MySQL中数据表添加字段

    添加一个char字段: mysql> alter table stock add src char(20); Query OK, 3766 rows affected (0.65 sec) Re ...

  7. ubuntu 18.04下修改python3指向

    起因 ubuntu18.04下默认带的是python3.6,但是因为需求需要升级为python3.7 步骤 安装 sudo apt install python3.7 修改环境变量 修改默认的pyth ...

  8. Burp Suite抓包使用步骤

    Burp Suite抓包工具的操作步骤见安装步骤那篇博客 检查是否存在漏洞,就看拦截之后修改过的数据是否写进了数据库 举例一.上传文件 1.打开Burp.调整Proxy-Intercept-Inter ...

  9. openwrt 单网卡路由模拟实现

    关键字 vlan openwrt 单臂路由 一直以来都认为路由器要至少要求是双网卡,因为至少要有lan/wan.最近看了单臂路由的介绍,自己在虚拟机测试了一把,发现单网口做路由器确实可行! 测试环境 ...

  10. USB URB的status及其代表的意义

    USB URB的status及其代表的意义 平时在处理客户问题时,经常需要分析出现问题时抓取的usbmon log,这个log中有一个字段非常重要:URB Status word,这个字段就是stru ...