从决定安装MySQL 8.0到开始行动,也就不到一个小时的时间,一个小时的时间能干些啥呢,来简单体验下8.0,官网上能看到这个丰富的表情包。
我们知道表情的信息在数据库中存储,使用 UTF8是无能为力的,是可以使用utf8mb4来弥补的,8.0里的默认字符集就是utf8mb4了。
看官网的链接,8.0已经正式上线,5.6,5.7已经成为了历史版本,所以现在的版本选型新环境还是选择5.6的话,就不大合理了。
目前的最新版本是8.0.11,有一点比较特别的是,如果我选择安装RedHat系统,目前是只能支持RPM方式安装,其实对我来说,我对RPM安装是敏感的,依赖有些重,源码安装看起来逼格比较高。
通用的还是二进制,算了还是直接选择Linux Generic吧。
说实话,要完成这个看似艰巨的任务,其实我是输给了流量上,下载的流程还是不够非一般的速度。
所以在等待下载的过程中,我大脑中飞快的闪现着8.0的一些特性。
1.创建数据库,查看字符集
2.查看存储引擎的变化
3.查看数据字典信息的变化
4.查看数据文件的分布情况
5.新增的工具集
6.验证role的效果
7.验证窗口函数
8.验证不可见索引
大概又等了10多分钟,我们开始解压部署一下服务。
写了个简单的参数文件:
[client]
port = 3308
socket = /data/mysql_8.0/mysql.sock
[mysqld]
port = 3308
user = mysql
socket = /data/mysql_8.0/mysql.sock
basedir = /usr/local/mysql_8.0
datadir = /data/mysql_8.0
log-error = error.log
server-id = 3308
初始化数据库服务。
/usr/local/mysql_8.0/bin/mysqld --defaults-file=/data/my.cnf --initialize-insecure
这个以前版本最大的不同就是没有任何输出了。
启动MySQL 8的数据库服务
/usr/local/mysql_8.0/bin/mysqld_safe --defaults-file=/data/my.cnf &
如果登录的时候,客户端版本太低,会报出如下的错误来。
# mysql --socket=/data/mysql_8.0/mysql.sock --port=3308
ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded: /usr/local/mysql/lib/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory
而我们可能需要这样设置,指定mysql的执行路径。
我们来逐个验证一下:
1.创建数据库,查看字符集
当前数据库的情况如下:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
新建一个test数据库。
mysql> create database test;
Query OK, 1 row affected (0.09 sec)
查看字符集,确实是默认utf8mb4了。
mysql> show create database test;
| Database | Create Database |
| test | CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ |
2.查看存储引擎的变化
查看存储引擎的情况,可以发现MyISAM其实还在列表中,后续应该会直接去掉了。
3.查看数据字典信息的变化
通过这个对比可以看到有些数据字典的存储引擎显示已经发生了变化,在5.7中是这样显示的。
在8.0中有了变化,存储引擎已经不显示为Memory了,而是代以NULL显示。
4.查看数据文件的分布情况
我创建了一个表test,发现在文件目录下只有一个.ibd文件了,没有了.frm文件。
[root@dev01 test]# ll
total 80
-rw-r----- 1 mysql mysql 114688 May 26 23:52 test.ibd
如果细看初始化目录,可以明显看到undo的设置已经作为了标配,还有一个较新的mysql.ibd文件。通过strings解析可以看到表结构的一些信息在这个里面了。
5.新增的工具集
整体来看,bin目录下的文件不光没多,还少了4个。
6.验证role的效果
mysql> create role app_read;
Query OK, 0 rows affected (0.18 sec)
mysql> grant select on test.test to app_read;
Query OK, 0 rows affected (0.08 sec)
领取专属 10元无门槛券
私享最新 技术干货