1.前言
当前MySQL最新版本:8.0.14 (听说比5.7快2倍)
官方之前表示:MySQL 8.0 正式版 8.0.11 已发布,MySQL 8 要比 MySQL 5.7 快 2 倍,还带来了大量的改进和更快的性能!
开源中国介绍文档:MySQL 8.0 正式版 8.0.11 发布:比 MySQL 5.7 快 2 倍
2.开始
1.我的设备介绍
服务器:2019-1-06 新购置的阿里云CentOS7.5 的服务器;
系统镜像采用阿里云自家默认的CentOS7镜像;
2、准备
首先你得登陆到自己的服务器。
SSH远程登陆Linux(Xshell6+Xftp6)
3、获取MySQL最新版 rpm包 集合 的下载地址(获取最新版MySQL下载地址方法)
MySQL下载页面:https://dev.mysql.com/downloads/mysql/8.0.html
这里我选择的是RedHat
第一个为一个 tar归档包,里面是 后面所有 rpm 的打包(仔细看后面都是rpm 结尾的)
鼠标右键点击,然后复制链接
4、wget下载到服务器
5、解压MySQL归档包
tar -xvf mysql-8.0.14-1.el7.x86_64.rpm-bundle.tar
6、开始安装
我们在Linux系统中,如果要使用关系型数据库的话,基本都是用的mysql。
而且以往7以下版本的centos系统都是默认的集成有mysql。
然而对于现在最新的centos7系统来说,已经不支持mysql数据库,它默认内部集成了mariaDB。
如果我们想要使用 mysql 的话,就要先将原来的mariaDB卸载掉,不然会引起冲突。
卸载maridb (rpm 不会卸载软件的 自行百度)
查看安装的 mariaDB:rpm -qa | grep mariadb
卸载:rpm -e ( 为软件名)
如果不能卸载则用:rpm -e —nodeps ( 为软件名)
libaio.so.1()(64bit) is needed by MySQL-server 问题
直接使用yum包管理工具安装即可:
yum install libaio
yum install numactl
2、使用 rpm -vih XXXXXX(XXXXXX 为 rpm包全名)
按照依赖顺序依次安装(能安装的安装就行,像test这个不方便安装就算了。)
mysql-community-common-8.0.14-1.el7.x86_64
mysql-community-libs-8.0.14-1.el7.x86_64
mysql-community-libs-compat-8.0.14-1.el7.x86_64
mysql-community-client-8.0.14-1.el7.x86_64
mysql-community-embedded-compat-8.0.14-1.el7.x86_64
mysql-community-server-8.0.14-1.el7.x86_64
7、启动MySQL服务,并设置root密码
1、启动mysql服务
service mysqld restart
2、初次安装mysql,不知道root账户密码。
vim /var/log/mysqld.log
3、修改密码
ALTER USER "root"@"localhost" IDENTIFIED BY "1234"
1、当中会遇到的问题
MySQL8.0报错:Unknown system variable ‘validate_password_policy’
1、在安装MySQL8.0时,修改临时密码,因密码过于简单(如:123456),不符合MySQL密码规范,会触发一个报错信息:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements。
1、解决办法调整MySQL密码验证规则,修改 policy 和 length 的值。
2、MySQL 5.7 进行如下设置,即可解决问题:
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;
3、MySQL 8.0 执行代码:
mysql> set global validate_password_policy=0;
ERROR 1193 (HY000): Unknown system variable 'validate_password_policy'
mysql> set global validate_password_length=1;
ERROR 1193 (HY000): Unknown system variable 'validate_password_length'
1、分析: 可以看到,修改 policy 和 length 的值,在MySQL5.7中好使,在MySQL8.0中无效。’validate_password_policy’ 变量不存在。
2、解决: 先修改一个满足的密码 (如:Root_12root)。
补充: validate_password_policy 有以下取值:
默认是1,即MEDIUM,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。
3、密码修改后,可用命令查看 validate_password 密码验证插件是否安装。
mysql> SHOW VARIABLES LIKE ‘validate_password%’;
4、MySQL 5.7 查看密码验证插件:
5、 MySQL 8.0 查看密码验证插件:
1、 通过查看 MySQL5.7 和 MySQL8.0 密码验证插件对比,可知两个版本中,变量名不一样。(_password_policy 和 _password.policy ) —- 问题原因所在。
2、MySQL 8.0 调整密码验证规则:
mysql> set global validate_password.policy=0;
mysql> set global validate_password.length=1;
8、设置开机启动
systemctl enable mysqld
systemctl daemon-reload
9、设置允许远程登录和开启防火墙
Mysql默认不允许远程登录,所以需要开启远程访问权限
可以先查看user表
select user,authentication_string,host from user;
默认都是localhost
update user set host = '%' where user = 'root';
此时root的host是所有都可以了
然后刷新修改
FLUSH PRIVILEGES;
这步一定要做,否则无法生效。
然后开启防火墙
[root@localhost ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
success
[root@localhost ~]# firewall-cmd --reload
success
10、配置默认编码为utf8
修改/etc/my.cnf配置文件,在[mysqld]下添加编码配置,如下所示:
[mysqld]
character_set_server=utf8
init_connect='SET NAMES utf8'
编辑保存完 重启mysql服务;
[root@localhost ~]# systemctl restart mysqld
查看下编码:
mysql> show variables like '%character%';
可以看出已经改为utf8字符了
通过本地如果仍然访问不了,可能是mysql第三方客户端版本太低,不支持mysql8.0的加密方式。
如何处理参见博客: 远程连接mysql8.0,Error No.2058 Plugin caching_sha2_password could not be loaded