一、MySQL 8.0新特性:
1、默认字符集由latin1变为utf8mb4
2、MyISAM系统表全部换成InnoDB表
3、自增主键AUTO_INCREMENT的值支持持久化
4、InnoDB表的DDL支持事务完整性
5、支持在线修改全局参数并持久化
6、新增降序索引
7、对于group by字段不再隐式排序
8、大幅改进了对JSON的支持
9、支持redo和undo日志加密
10、InnoDB select for update跳过锁等待
11、在SQL语法中增加SET_VAR语法
12、使用INVISIBLE关键字在创建表或进行表变更中设置索引是否可见
13、支持直方图
14、新增innodb_dedicated_server参数
15、日志分类更详细
16、undo空间自动回收
17、新增资源组功能,用于调控线程优先级及绑定CPU
18、增加角色管理
二、MySQL 8.0安装与配置:
1、关闭firewalld和SELinux
2、删除CentOS 7自带的MariaDB:
# rpm -qa | grep -i mariadb --> mariadb-libs-5.5.60-1.el7_5.x86_64
# rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
3、删除原有的MySQL:# rpm -qa | grep -i mysql //有就删除
4、删除原有的MySQL配置文件:# find / -name my.cnf //有就删除
5、下载MySQL 8.0,下载地址https://dev.mysql.com/downloads/mysql/
6、上传所有RPM软件包至服务器的/tmp目录
mysql-community-client-8.0.16-1.el7.x86_64.rpm
mysql-community-libs-8.0.16-1.el7.x86_64.rpm
mysql-community-common-8.0.16-1.el7.x86_64.rpm
mysql-community-libs-compat-8.0.16-1.el7.x86_64.rpm
mysql-community-devel-8.0.16-1.el7.x86_64.rpm
mysql-community-server-8.0.16-1.el7.x86_64.rpm
7、安装MySQL 8.0:
# cd /tmp
# yum -y localinstall *.rpm
8、初始化MySQL 8.0:
# ll -lh /var/lib/mysql --> 空
# mysqld -I --user=mysql
# ll -lh /var/lib/mysql
备注:使用命令# mysqld --verbose --help | less查看详细帮助信息
9、修改/etc/my.cnf配置文件:
# cp /etc/my.cnf /etc/my.cnf.bak
# vim /etc/my.cnf,在[mysqld]配置段中新增如下代码:
port=3306
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip_name_resolve=1
innodb_file_per_table=1
10、启动MySQL 8.0:
# systemctl start mysqld.service
# ss -tunlp | grep 3306
# systemctl status mysqld.service
# systemctl enable mysqld.service
11、MySQL 8.0安全配置向导:
# cat /var/log/mysqld.log | grep password --> x:o:&mg-r2Id
# mysql_secure_installation
12、授权远程用户登录:
# mysql -uroot -p
mysql> create user 'root'@'%' identified by '123456';
mysql> grant all on *.* to 'root'@'%';
mysql> flush privileges;
备注:MySQL 8.0已经不支持在grant授权的同时创建用户,而是需要先创建用户,再进行授权
13、使用客户端工具Navicat Premium(版本12.1.17)远程连入MySQL 8.0:
备注:如果使用客户端工具连接MySQL 8.0时提示“错误号码2058:Plugin caching_sha2_password could not be loaded”,出现这个错误提示的原因是MySQL 8.0之前的版本中加密规则是mysql_native_password,而在MySQL 8.0之后的版本中加密规则是caching_sha2_password,解决此问题的方法有以下2种
(1)升级客户端工具版本
(2)把MySQL用户登录密码加密规则还原成mysql_native_password:
a、修改密码为永不过期:
mysql> alter user 'root'@'%' identified by '123456' password expire never;
b、修改密码并指定MySQL用户登录密码加密规则为mysql_native_password:
mysql> alter user 'root'@'%' identified with mysql_native_password by '123456';
c、刷新授权表:
mysql> flush privileges;