m6米乐安卓版下载-米乐app官网下载
暂无图片
4

mysql 8.2部分更新解读 -m6米乐安卓版下载

原创 多明戈教你玩狼人杀 2023-11-01
532

继mysql在7月发布了8.1之后,让我意料之外的是,短短三个月又发布了8.2,要知道这之前8.0是维持了数年之久。不但两个版本间隔很短,实际上动作也不小。这几天利用上下班地铁路上,总算把8.2的release notes都读完了,抛砖引玉发一些自己的解读,希望能够有更多朋友来讨论。涉及到的点比较多,有的是开发相关,有的是修复bug,我个人仅仅从我能理解的几个方面来做一个解读。

审计日志相关

新增脚本,移除企业版审计插件。mysql企业版的审计插件包含了谁在什么时间连上与断开连接,在连接期间执行了什么操作。允许企业用户付费安装,同样也该允许卸载。


安全认证相关

在之前版本废弃了mysql_native_password插件之后,对该插件可以在启动时禁用了。实际上在8.0开始,使用的caching_sha2_password这个插件。


废弃功能更新

1. 函数wait_until_sql_thread_after_gtids(),这个在8.0版本中弃用的函数在8.2已经删除,如果我们在应用程序或脚本中调用基会报错,被wait_for_executed_gtid_set()所替代。

2. binlog_transaction_dependency_tracking,这个变量也已经被正式废弃了,预计后面8.3或者8.3就会删除。

3. expire_logs_days,这个变量同样也被废弃了,而被binlog_expire_logs_seconds这个变量替代,说实话,我不太能接受这个替代,因为实际操作的时候天数比秒更符合现实需要。

4. new & old,4.x和5.1这些老版本兼容性相关的两个参数,8.2已经正是废弃,因为我接触mysql的时候已经是5.7的时代,这两个从没用过。

5. 数据库级别的授权,比如grant select on db_%.* to user,那么我们实例中的db_1,db_test,db_xxxxxxx,都会被批量授权,这种用法已经被废弃了,其实也能理解,这里面会存在一些安全隐患。

6. 权限还有一个就是对user@'%'的授权,比如我们有一个user@localhost,一个user@'%',我们做一个grant xxxx on xxxx to user@'%',那么user@localhost也会自动得到这个权限,以后这种用法不可以了,必须显式授权给user@localhost。

7. information_schema.processlist被废弃了,捎带着还有show processlist对这张表查询的结果官方建议采用performance-schema-show-processlist这个变量,让show processlist命令获取performance schema的结果,而后面等到processlist正式删除之后,show processlist命令的结果也将默认变成配置了performance-schema-show-processlist之后的结果,而performance-schema-show-processlist这个参数也将同时被删除。有点绕。

8. set_user_id这个权限也废弃了,未来会被set_any_definer和allow_nonexistent_definer替代。老实说,这个权限我没用过。


sql函数与操作符说明

str_to_date函数,不会对转换后的字符串做日期有效性校验,所以有可能出现‘2021-11-31’这种日期。


sql语法说明

1. mysqldump增加了新选项output-as-version,虽然但是,我怎么记得8.1的release not,mysqldump刚刚说要废弃(wl #15652),现在又在8.1加入新选项。

2. explain语法变化,现在支持了'explain for database db1 select * from t where c1>0'这种写法

8.2:

{explain | describe | desc}

      [explain_type] [into variable

      {[schema_spec] explainable_stmt | for connection connection_id}

8.0:

{explain | describe | desc}

          [explain_type

         {explainable_stmt | for connection connection_id}


此外就是一些bug修复,从上面的更新内容来看,我个人有几点总结:

1. mysql之前的安全管理,尤其是权限管理,仍然存在着很多不严谨的地方,诸如grant xxx on db_%.*这种语句,在权限管理上,明显是朝着更严格方向去走,这也是一个好事,每一次授权都应该是确定的列表,而不是存在自动的授权。

2. 上古版本兼容性相关,比如old new这俩参数,在查阅官方文档时看到的版本,比我预想的版本还要早,现在生产环境已经几乎看不到了。

3. 在使用习惯上,做了调整,例如以前大家都很习惯使用的processlist,变成了perfomrance schema相关的结果,expired log days也废弃了,让用户开始尝试使用粒度更细的秒级别。也是希望用户以后朝着更精细化使用的方向去适应。


按照oracle官方的说法,8.4将会是长期支持版,我猜测8.1和8.2以及未来8.3的废弃内容,可能都会是8.4正是删除的内容。



「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【米乐app官网下载的版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

网站地图