「MySQL高级篇」MySQL常用工具

1,182 阅读7分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第八天,点击查看活动详情

大家好,我是Zhan,一名个人练习时长一年半的大二后台练习生,最近在学MySQL高级篇,欢迎各路大佬一起交流讨论

👉本篇速览

本文将讲解一些MySQL常用的管理工具,因为我们操作数据库,不仅仅要操作数据库的数据,同时也需要对数据库服务器做好管理,同时在实际的开发场景中,我们也需要进行数据备份、数据恢复这些操作,因此,本文统计了五个常用的管理MySQL的命令,这里的命令其实不需要大家去记忆,但是需要大家有印象,同时,本文可以作为大家查命令的一篇文章,所以可以收藏(hhh不要脸,骗收藏),那我们就逐一讲解下面五个命令:

  • 1️⃣ mysql连接命令
  • 2️⃣ mysqladmin检查服务器相关信息
  • 3️⃣ mysqlbinlog查看二进制文件
  • 4️⃣ mysqlshow检查数据库相关嘻嘻
  • 5️⃣ mysqldump数据库备份

Tips:本篇知识点比较多、比较密集、大家可以慢慢来看


1️⃣ mysql

如果大家使用过命令行的MySQL,那么一定对于这个命令不陌生,也就是说在客户端工具连接MySQL的命令

在我们使用Linux服务器命令行连接MySQL时就需要用到这串命令:mysql -u xxx -pxxx

当然,除了 -u,-p,两个选项以外还有其他的选项:

  1. -u:-username,指定用户名
  2. -p:-password,指定密码
  3. -h:-host,指定服务器IP 或者 域名
  4. -P:-port,指定端口,注意是大写P
  5. -e:-execute,指定SQL并退出

这些在Linux的学习中会有讲到,其中可能比较陌生的就是 -e,那么它有什么实际的应用呢?

由于 -e可以帮助我们在不连接MySQL服务器的情况下,在MySQL客户端执行MySQL语句,因此对于一些批处理的脚本,这种方式尤其方便,我们可以在下面的导出中看到,但是我们可以在这里先使用简单的查询试一下:

mysql -h192.168.200.202 -P3306 -uroot -p1234 -e "select * from stu"

但是,如果我们执行这条命令,其实我们得到的结果并不是stu表的数据,而是报错信息,这是为什么呢?

因为我们在这里是没有选择数据库表的,也就是说它并不知道去哪个数据库拿到这张表,因此在执行的时候我们同时要指定它的数据库,也就是下面这条SQL语句:

mysql -h192.168.200.202 -P3306 -uroot -p1234 数据库名 -e "select * from stu"


2️⃣ mysqladmin

mysqladmin:是一个执行管理操作的客户端程序,可以用它来检查服务器的配置和当前状态、创建和删除数据库等操作。

mysqladmin有许多命令参数,但是具体使用哪个参数,又对应哪个数据,我们不需要去记忆,只需要在命令行打出mysqladmin --help,就能得到:

语法为:mysqladmin [OPTIONS] command command,在帮助文档中都是有写的


3️⃣ mysqlbinlog

早在学之前,就有幸使用过这个工具,其实我是希望大家永远永远不会使用到这个工具!!!因为我当时使用它,是因为误操作了数据,要进行数据恢复:

但其实,这个命令真正的作用是查看二进制日志,由于服务器生成的二进制日志文件以二进制格式保存,所以如果想要检查这些文本的文本格式,就会使用到mysqlbinlog日志管理工具

那我们怎么使用呢,也就是它的语法:mysqlbinlog [options] log-files1 log-files2……

options有以下这几个:

  1. -d:-database,指定数据库名称,即只列出指定的数据库相关操作
  2. -o:-offset,忽略掉日志的前n行命令
  3. -r:-result-file,将输出的文本格式日志输出到指定文件
  4. -s:-short-form,显示简单格式,省略到一些信息
  5. --start-datetime=date1 --stop-datetime=date2:指定时间间隔的日志
  6. --start-position=pos1 --stop-position=pos2:指定位置间隔的日志

这里我们只做查看二进制文件的介绍,并不详细说明如何去恢复数据,这个我会在后面再写一篇文章详细说明,当你误操作的数据,我们如何弥补我们的过错~(我当时是update没有写where


4️⃣ mysqlshow

mysqlshow:客户端对象查找工具,用来很快地查找存在哪些数据库、数据库的表、表中的列或者索引

它的语法为:mysqlshow [options] [db_name[table_name[col_name]]]

可以选择的选项有:

  1. --count:显示数据库以及表的统计信息(数据库、表可以不指定)
  2. -i:显示指定数据库或者指定表的状态信息

可能看完上面的描述对这个命令的使用还是比较模糊,我们举几个例子,来看看它的语法使用以及具体显示的信息有哪些:

mysqlshow -uroot -p1234 --count,此处我们没有指定数据库或者表,因此它统计了所有数据库的表的个数,以及该数据库的总记录数:

mysqlshow -uroot -p1234 db01 --count,如果我们指定了查看某个数据库的信息,我们将会得到它里面所有表的字段数目、以及总记录数

如果我们精细到表呢,我们执行mysqlshow -uroot -p1234 db01 course --count,我们将会得到各个字段的类型、索引、是否为空、权限、备注……

看完了 --count,我们来看看第二个参数 -i,看看会有什么样的效果:

在这里,我们能看到数据库的一些状态信息,例如:存储引擎、版本、行格式、数据长度……


5️⃣ mysqldump

如果说这几个工具中有哪些是比较常用,需要掌握,而不是仅仅停留在有印象就好的,mysqldump一定是一个,有了它,我们就能进行数据库的备份,或者不同数据库之间的数据迁移

话不多说,直接上语法:

  • mysqldump [options] db_name [tables] > 备份的SQL文件地址
  • mysqldump [options] --databse 数据库名 [表名] > 备份的SQL文件地址
  • mysqldump [options] -all-databases > 备份的SQL文件地址

关于选项,可以分为两类,一类是连接选项,也就是常规的 -u,-p,-h,-P,另一类就是输出选项,我们简单列举一下:

  • --add-drop-database:在每个数据库创建语句之前加上删除数据库的语句
  • --add-drop-table:在每个表创建语句之前都加上删除表语句,默认开启
  • -n:不包含数据库的创建语句
  • -t:不包含数据表的创建语句
  • -d:不包含数据,即只要表结构
  • -T:自动生成两个文件,一个是SQL文件,存储创建表结构的语句,一个是txt文件,存储数据

我们以 -T这个比较特殊的选项做一个示例:mysqldump -uroot -p1234 -T /var/lib/mysql-files/ db01 score,这样我们就能得到表结构和数据的两个文件:

其实输出选项我们使用的并不多,仅做了解,主要是备份这个命令比较重要


🍁 友链


✒写在最后

都看到这里啦~,给个点赞再走呗~,也欢迎各位大佬指正,在评论区一起交流,共同进步!也欢迎加微信一起交流:Goldfish7710。咱们明天见~

求赞.jpeg