MySQL的几个知识点

December 17, 2023
测试
测试
测试
测试
3 分钟阅读

MySQL的几个知识点

今天上班没搞什么新的东西,所以简单写点儿MySQL相关的小的tip,希望对大家有所帮助吧,如果你恰好了解这些功能,那权当我没说过。

1、mysqldump可以将数据导出为csv文件。

今天在和同事讨论如何将MySQL中的数据流转到infobright的时候,同事提了两个方案,一个是select into outfile的方法,直接导入到一个csv文件中,还有一个是使用mysqldump进行导入,说实话,这个方法我之前没有用过,因为从来没有尝试过使用mysqldump来导出csv文件,一般导出数据到文件,都是使用的select into outfile的方法。于是我查了查资料,发现mysqldump真的可以导出csv文件,方法大概如下:

mysqldump -uroot -p123456 db_name tbl_name -t -T /data/mysql/data --fields-terminated-by=','
1、db_name;导出的数据库;
2、tbl_name;导出的数据表;
3、-t;不导出create 信息;
4、-T 指定导出文件位置的位置
5、--fields-enclosed-by=\"  字段引号;
6、--fields-terminated-by=,  字段分割符;

这里有几个点需要注意:

a、使用的用户需要有select和file权限

b、到处的目录必须让mysql用户有写权限

c、该操作只能在服务器本地进行,不能远程进行

d、可以结合-w参数,设置条件来过滤出想要到处的记录

2、MySQL8.0版本支持一个用户使用两个密码

这个是另外一个同事发现的,在MySQL8.0.14版本,可以查看官方文档,支持同时存在两个密码,大概讲一下逻辑:

我们知道,mysql中可以使用alter user的语法来修改密码,例如要将root密码置空,假设原来的密码是123456,我们可以使用alter user root@'localhost' identified by '';的方法,那么要在置空之后,使用原来的密码123456也能登录,可以使用下面的语法:

alter user root@'localhost' identified by '' retain current password

这个时候,就可以使用两个密码进行登录了,这个时候,如果我们想回收第一个密码123456,应该怎么办?使用下面的SQL:

alter user root@'localhost' discard old password

使用这个方法之后,老的密码123456将会不可用。

需要注意,在这个过程中,操作账号应该拥有application_password_admin权限或者create user的权限。

最后,这个新的功能有啥用?其实使用在某些对安全要求比较高的业务场景下面。例如业务需要每个季度更换一次登录密码,而且不能停机维护,要做到业务无感知,这种情况下,这个功能就派上用场了。

3、解析innodb数据文件的工具

今天下午还在想,如何能够查看ibdata.ibd这个文件中的内容,晚上就在老叶茶馆的公众号上看到的这个工具,叫innblock,它的功能是可以查看ibd数据文件,可以得到每一行数据的偏移量,并且按照逻辑和物理的顺序排序。给上github地址:https://github.com/gaopengcarl/innblock

还有一个工具叫bcview,可以讲数据文件按照既定的大小分块,例如16kb,然后访问每个块的偏移量后制定的字节数。地址和上面一样。

工具我还没有测试,大家有兴趣可以测试一下。

4、MySQL explain analyze

这也是MySQL8.0的新功能,它是用来分析和理解查询如何执行的,可以理解为一个对explain功能的完善吧。主要有下面2个分支:

a、检查查询计划

explain format=tree select xxxxx

该功能可以向我们显示查询计划和成本估算。

b、分析查询执行

explain analyze select xxxxx

显示在查询上花费的时间以及原因,并生成查询计划

具体用途:可以用来查询为何一个select语句花费了这么长时间?时间都花在了那里?或者是为什么优化器选择了这个计划?等等一系列问题,有兴趣大家可以翻看8.0的官方文档。

继续阅读

更多来自我们博客的帖子

如何安装 BuddyPress
由 测试 December 17, 2023
经过差不多一年的开发,BuddyPress 这个基于 WordPress Mu 的 SNS 插件正式版终于发布了。BuddyPress...
阅读更多
Filter如何工作
由 测试 December 17, 2023
在 web.xml...
阅读更多
如何理解CGAffineTransform
由 测试 December 17, 2023
CGAffineTransform A structure for holding an affine transformation matrix. ...
阅读更多