MySQL 8.0初体验

从决定安装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)

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2018-05-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

巧用flashback database实现灵活的数据切换(r5笔记第9天)

今天是DTCC第二天了,抽空去听了下,因为手头有一些活,听到一半只能赶回公司继续工作。 客户今天有一个需求,因为开发现在在生产环境中遇到了一些困难,需要在测试生...

35550
来自专栏流浪猫的golang

go 数据库框架xorm 的使用

golang 连接mysql 的博客可以看我前面的文章。这片文章主要讲xorm,我试过golang 的orm 框架 有beego自带的数据库orm框架htt...

46410
来自专栏C/C++基础

ERROR 126 (HY000) at line 1: Incorrect key file for table '/tmp/#sql_7b09_0.MYI'; try to repair it

我在slelect一个数据量很大的merge表时,并同时将select结果集insert到另外一张表中,报了如下错误:

12320
来自专栏BigNerdCoding

SQLite 并发的四种处理方式

SQLite 是一款轻型的嵌入式数据库它占用资源非常的低,处理速度快,高效而且可靠。在嵌入式设备中,可能只需要几百 K 的内存就够了。因此在移动设备爆发时,它依...

1.3K70
来自专栏漏斗社区

工具 | sqlmap系列(三)进阶篇

SQLMAP系列(二)介绍了sqlmap的基本注入流程,登陆注入和POST注入以及一个小技巧,本期斗哥将带来sqlmap的进阶使用,希望通过本期的学习能够帮助大...

73390
来自专栏MYSQL轻松学

Mysql5.5&Mysql5.6&Mysql5.7特性

Mysql5.5 特性,相对于Mysql5.1 性能提升 默认InnoDB plugin引擎。具有提交、回滚和crash恢复功能、ACID兼容。 行级锁(一致性...

52950
来自专栏数据库

游戏用户中心开发

用户中心最主要的功能就是管理用户的注册和登陆,登陆成功之后生成对应的token,并负责token的验证。当一个用户注册或登陆成功之后,它的信息会在用户中心服务中...

21280
来自专栏沈唁志

WordPress添加评论回复邮件提醒通知功能

20220
来自专栏Web技术研发

如何防订单重复提交策略方法

#### [原文链接:https://www.cnblogs.com/jett010/articles/9056567.html](https://www.cn...

45200
来自专栏杨建荣的学习笔记

Mycat分库分表的简单实践

MySQL的使用场景中,读写分离只是方案中的一部分,想要扩展,势必会用到分库分表,可喜的是Mycat里已经做到了,今天花时间测试了一下,感觉还不错。 关于...

47860

扫码关注云+社区

领取腾讯云代金券