mysql5好还是8_从内心挣扎到豁然开朗,拥抱MySQL5.7!

952230e8f544805419686914b26b3a03.png作者:志明

概述

相信大多数个人和企业都会用到Mysql数据库,而Mysql数据库作为目前流行的数据库管理系统之一,以其体积小、速度快、开源特性,受到大家追捧。

Mysql版本也在不断更新迭代,而在生产环境中用的最多的还是Mysql5.5和Mysql5.7。那同时接触到两种版本的小伙伴,肯定心中也会有以下疑问吧?

- Mysql5.7 的新特性带来的冲击能否取代Mysql5.5?

- Mysql5.7 在性能方面是否优于Mysql5.5?

人们对于新事物总是抱有好奇和探索的心,那么接下来我们带着疑问去挖掘 Mysql5.7在新特性和性能方面的变化。

Mysql5.7 新特性

2.1 安全方面

2.1.1 user表字段变更

mysql.user表 字段authentication_string替代password字段

案例:

Mysql5.5

94cb9f805c26244a3fa88f9e4ee61f69.png

M ysql5.7

66103c5c274a43f7eed90be170a1a7da.png

2.1.2 用户名最大长度增加

用户长度最大为32字节,之前最大长度为16字节,并且CREATE USER 和 DROP USER 命令里实现了 IF [NOT] EXISTS 条件判断。

案例:

         M ysql5.7用户名支持16位以上(上-Mysql5.5,下-Mysql5.7) 10b4cc6feb6843cccb9c6aacb23ac047.png

179e156e68a6f798ab46561d17dc79c8.png

2.1.3 密码过期策略

增加密码过期机制,过期后需要修改密码,否则可能会被禁用,或者进入沙箱模式。

为用户设置密码过期时间,一定时间以后,强制用户修改密码。可以直接在create user的时候设置,也可以alter user设置:

- PASSWORD EXPIRE NEVER    # 默认,过期时间受全局变量 default_password_lifetime 控制

- PASSWORD EXPIRE INTERVAL N DAY  #N天后过期

案例:

当密码过期策略是默认时,由 default_password_lifetime 的参数决定过期间, 0 表示永不过期 ad536d6d0c01579568f384ccfeb7939d.png

765771098d10e0e0aa884de520e1e2df.png

2.1.4 密码安全策略

密码要求的强度受参数:validate_password_policy 的影响。validate_password_policy的值有:

- 0 or LOW:仅需需符合密码长度(由参数validate_password_length指定,默认为8)

- 1 or MEDIUM:满足LOW策略,同时还需满足至少有1个数字,小写字母,大写字母和特殊字符,默认。

- 2 or STRONG:满足MEDIUM策略,同时密码不能存在字典文件(dictionary file)中

相关参数:

validate_password_dictionary_file:在STRONG模式下还能设置字典文件,字典中存在的密码不得使用。可以通过该参数来设置字典文件。

validate_password_length:设置密码的最小长度,默认值为8。

validate_password_mixed_case_count:小写和大写字符的最小数目,如果密码策略是MEDIUM或STRONG的,有validate_password插件检查,默认1。

validate_password_number_count:数字字符的最小数目,如果密码策略是MEDIUM或STRONG的,有validate_password插件检查,默认1。

validate_password_special_char_count:非字母字符(特殊字符)的最小数目,如果密码策略是MEDIUM或STRONG的,有validate_password插件检查,默认1。

案例:

开启密码策略的两种方式

A、 修改配置文件并重启

 [mysqld]
plugin-load=validate_password.so
validate-password=FORCE_PLUS_PERMANENT

        B、 在线修改,临时生效

设置了密码策略,简单密码会报ERROR

ee1bd7e8731813ca37f55c72e132ebd5.png

2.1.5 用户可以锁定

可以对建立用户进行锁定和解锁

案例:

 对用户user进行锁定和解锁

a5282f5373d1b47a9df6446dee4721e1.png

2fc3fbb98c7b23d13fb5780f83ab25e7.png

c055e13dab8bf8eb7bfaa2ee9e9c3583.png

2.1.6 初始化方式改变

高版本的MySQL,逐步废弃mysql_install_db的初始化方式

在5.7中,推荐使用bin/mysqld –-initialize对数据库进行初始化,初始化过程会创建带随机密码的 root@localhost 账号并不再创建test 库,初始化输出如下:

[Note] A temporary password is generated for root@localhost: KJ1foE6BFX;3

在初始化时如果使用–initial-insecure,则会创建空密码的 root@localhost 账号,新初始化的 root@localhost 账号,第一次登录时,需要修改新的密码才能正常使用。

2.2 新支持

2.2.1 原生支持JSON

5.7版本之前,只能在varchar或是text等字符类型的列中存储json类型的字符串,并通过程序解析使用json字符串。这种做法当然有其缺陷:必须自行确认/解析数据、解决更新中的困难、或在执行插入操作时忍

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值