前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【MySQL】mysqladmin、mysqlshow、mysqlcheck都是干嘛的?

【MySQL】mysqladmin、mysqlshow、mysqlcheck都是干嘛的?

作者头像
硬核项目经理
发布2024-03-19 14:48:02
990
发布2024-03-19 14:48:02
举报

mysqladmin、mysqlshow、mysqlcheck都是干嘛的?

在日常的使用中,我们一般使用 mysql 客户端工具来进行日常的数据库操作,但其实,整个 MySQL 系统所提供的客户端工具远不止 mysql 一个。今天,我们就来简单地了解一下另外三个工具,分别是 mysqladmin、mysqlshow、mysqlcheck 。

mysqladmin

mysqladmin 这个命令行工具其实大家应该多少会接触过一点,它的作用是用于管理操作一些服务器配置和当前的状态信息,并且可以创建数据库。比如说我们去创建一个新数据库。

代码语言:javascript
复制
[root@localhost ~]# mysqladmin create ma_test;

同时,它也可以用于查看一些服务器的状态信息,比如说我们经常会使用的 processlist ,就可以直接使用 mysqladmin 来查看。

代码语言:javascript
复制
[root@localhost ~]# mysqladmin  processlist
+----+-----------------+-----------+----+---------+-------+------------------------+------------------+
| Id | User            | Host      | db | Command | Time  | State                  | Info             |
+----+-----------------+-----------+----+---------+-------+------------------------+------------------+
| 5  | event_scheduler | localhost |    | Daemon  | 11752 | Waiting on empty queue |                  |
| 18 | root            | localhost |    | Query   | 0     | init                   | show processlist |
+----+-----------------+-----------+----+---------+-------+------------------------+------------------+

当然,还有更多的功能,比如说修改密码、查看变量信息、关闭服务、刷新表等等功能。这里就不一一进行演示了,有兴趣的小伙伴可以自己尝试一下。

mysqlshow

这个客户端工具主要是用于快速显示数据库信息,可以看到数据库是否存在表或者表的列以及索引信息。它的作用其实非常类似于在 mysql 中的 SHOW 的作用。

代码语言:javascript
复制
[root@localhost ~]# mysqlshow
+--------------------+
|     Databases      |
+--------------------+
| information_schema |
| ma_test            |
| mysql              |
| performance_schema |
| sys                |
| test               |
| test1              |
+--------------------+

直接使用这个工具,其实就是类似于 SHOW DATABASES; 的作用。在上面显示的内容中,可以看到前面我们刚刚使用 mysqladmin 创建的 ma_test 库。我们也可以指定数据库名称,这样就可以看到这个数据库下的表信息。

代码语言:javascript
复制
[root@localhost ~]# mysqlshow test
Database: test
+----------+
|  Tables  |
+----------+
| db_test  |
| raw_test |
| t        |
+----------+

接下来我们再把表名指定上,直接就可以获取到这个表中列字段的信息。

代码语言:javascript
复制
[root@localhost ~]# mysqlshow test t
Database: test  Table: t
+-------+------+-----------+------+-----+---------+-------+---------------------------------+---------+
| Field | Type | Collation | Null | Key | Default | Extra | Privileges                      | Comment |
+-------+------+-----------+------+-----+---------+-------+---------------------------------+---------+
| id    | int  |           | YES  |     |         |       | select,insert,update,references |         |
+-------+------+-----------+------+-----+---------+-------+---------------------------------+---------+

非常有意思吧,可以直接在命令行中就获取到库、表、列的信息。另外我们还可以加一些参数,看到更详细的信息。

代码语言:javascript
复制
[root@localhost ~]# mysqlshow test -v -v
Database: test
+----------+----------+------------+
|  Tables  | Columns  | Total Rows |
+----------+----------+------------+
| db_test  |        3 |          9 |
| raw_test |        3 |          0 |
| t        |        1 |          1 |
+----------+----------+------------+
3 rows in set.

-v 参数代表的是 --verbose 的简写,它的作用是显示详细的信息,这里写了两个会多出两列,分别表示列的数据和行的数量。如果只有一个 -v 的话,则只显示列的数据信息。

mysqlcheck

最后我们再来看看 mysqlcheck 这个工具,它的作用是进行表的维护,可以检查、修复、优化或者分析表。没错,也是我们可以在 mysql 客户端中进行的一些操作,在这里可以直接通过这个外部命令行工具来实现。

代码语言:javascript
复制
[root@localhost ~]# mysqlcheck --all-databases
mysql.columns_priv                                 OK
mysql.component                                    OK
mysql.db                                           OK
mysql.default_roles                                OK
mysql.engine_cost                                  OK
mysql.func                                         OK
mysql.general_log                                  OK
mysql.global_grants                                OK
mysql.gtid_executed                                OK
mysql.help_category                                OK
mysql.help_keyword                                 OK
mysql.help_relation                                OK
mysql.help_topic                                   OK
mysql.innodb_index_stats                           OK
mysql.innodb_table_stats                           OK
mysql.password_history                             OK
mysql.plugin                                       OK
mysql.procs_priv                                   OK
mysql.proxies_priv                                 OK
mysql.replication_asynchronous_connection_failover OK
mysql.replication_asynchronous_connection_failover_managed OK
mysql.replication_group_configuration_version      OK
mysql.replication_group_member_actions             OK
mysql.role_edges                                   OK
mysql.server_cost                                  OK
mysql.servers                                      OK
mysql.slave_master_info                            OK
mysql.slave_relay_log_info                         OK
mysql.slave_worker_info                            OK
mysql.slow_log                                     OK
mysql.tables_priv                                  OK
mysql.time_zone                                    OK
mysql.time_zone_leap_second                        OK
mysql.time_zone_name                               OK
mysql.time_zone_transition                         OK
mysql.time_zone_transition_type                    OK
mysql.user                                         OK
sys.sys_config                                     OK
test.db_test                                       OK
test.raw_test                                      OK
test.t                                             OK


[root@localhost ~]# mysqlcheck test
test.db_test                                       OK
test.raw_test                                      OK
test.t                                             OK

这个命令行工具如果不指定数据库名称的话,就需要使用 --all-databases 参数,这样就会检查所有库中的所有表,如果指定了数据库名称的话,就会检查指定数据库中的表。每一个表后面的 OK 就是表示表状态正常。

仅仅检查表状态有意义吗?这个工具的作用可不仅限于此,它还可以进行 CHECK TABLE,REPAIR TABLE,ANALYZE TABLE 和 OPTIMIZE TABLE 这些操作,只需要增加相应的参数即可,比如说我们使用 OPTIMIZE 去优化表空间。

代码语言:javascript
复制
[root@localhost ~]# mysqlcheck -o test tt
test.tt                                            OK

-o 表示的就是 --optimize 的意思,其实实际就是在 mysql 客户端中我们执行针对 tt 表的 OPTIMIZE TABLE 操作。不过这几个操作更推荐在 MyISAM 上使用,效果也更好,而且更主要的是这些操作会锁表,是非不得已情况下才要使用的命令和工具,所以大家先了解一下就好了。

总结

一口气看了三个客户端工具,非常简单,但是其实在我们的日常工作中却并不是很常见。一般来说可能在一些自己写的 shell 运维工具脚本中才能见到它们的身影。除了这三个之外,其实还有一些其它的客户端工具,像是非常常用的 mysqldump ,这个工具我们在将来学习 MySQL 备份相关的内容时再进行深入的学习。

参考文档:

https://dev.mysql.com/doc/refman/8.0/en/mysqladmin.html

https://dev.mysql.com/doc/refman/8.0/en/mysqlcheck.html#option_mysqlcheck_optimize

https://dev.mysql.com/doc/refman/8.0/en/mysqlshow.html

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-03-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农老张 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • mysqladmin、mysqlshow、mysqlcheck都是干嘛的?
    • mysqladmin
      • mysqlshow
        • mysqlcheck
          • 总结
          相关产品与服务
          云数据库 MySQL
          腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档