mysqlshow

  学无止境,又是为无知努力学习的一天,为什么要说下这个工具呢,因为之前运营组时不时有需求让统计一下表行数,然后mysqlshow的价值就体现了,先体验下mysqlshow查询dbcy数据库每个表的数据行数:

[root@chengyu ~]# mysqlshow -uroot -p --verbose --verbose dbcy 
Enter password: 
Database: dbcy
+-----------+----------+------------+
|  Tables   | Columns  | Total Rows |
+-----------+----------+------------+
| t1        |        2 |          5 |
| t2        |        3 |          7 |
| tb_cylog  |        5 |          3 |
| tb_notice |        3 |          1 |
| v_cylog   |        2 |          3 |
+-----------+----------+------------+
5 rows in set.

[root@chengyu ~]# mysqlshow -uroot -p --count --count dbcy 
Enter password: 
Database: dbcy
+-----------+----------+------------+
|  Tables   | Columns  | Total Rows |
+-----------+----------+------------+
| t1        |        2 |          5 |
| t2        |        3 |          7 |
| tb_cylog  |        5 |          3 |
| tb_notice |        3 |          1 |
| v_cylog   |        2 |          3 |
+-----------+----------+------------+
5 rows in set.

  对使用show命令的懒癌患者来说,输命令能少输一字母一个标点一个空格也算躺赚的,mysqlshow算是福音。

1. 什么是MySQLSHOW

  MySQL SHOW是日常使用的MySQL高频命令之一,MySQLSHOW提供SHOW SQL语句的命令行接口,可以快速便捷的查看MySQL数据库、表、列、索引等信息,相对其他的MySQL客户端工具来说,它冷门、低调,符合它适用范围不是一般有限的气质。

  调用mysqlshow:

[root@chengyu ~]# mysqlshow [options] [db_name [tbl_name [col_name]]]
  • 如果未指定数据库,则显示数据库名称列表。
[root@chengyu ~]# mysqlshow -uroot -p
Enter password: 
+--------------------+
|     Databases      |
+--------------------+
| dbcy               |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
  • 如果没有指定表,则显示数据库中所有匹配的表。
[root@chengyu ~]# mysqlshow -uroot -p dbcy
Enter password: 
Database: dbcy
+-----------+
|  Tables   |
+-----------+
| t1        |
| t2        |
| tb_cylog  |
| tb_notice |
| v_cylog   |
+-----------+
  • 如果没有指定列,则显示表中所有匹配的列和列类型。
[root@chengyu ~]# mysqlshow -uroot -p dbcy t1
Enter password: 
Database: dbcy  Table: t1
+-------+-------------+--------------------+------+-----+---------+----------------+---------------------------------+---------+
| Field | Type        | Collation          | Null | Key | Default | Extra          | Privileges                      | Comment |
+-------+-------------+--------------------+------+-----+---------+----------------+---------------------------------+---------+
| tid   | int         |                    | NO   | PRI |         | auto_increment | select,insert,update,references |         |
| tname | varchar(20) | utf8mb4_general_ci | YES  |     |         |                | select,insert,update,references |         |
+-------+-------------+--------------------+------+-----+---------+----------------+---------------------------------+---------+

  mysqlshow支持的参数选项:

[root@chengyu ~]# mysqlshow --help
mysqlshow  Ver 8.0.20 for Linux on x86_64 (Source distribution)
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Shows the structure of a MySQL database (databases, tables, and columns).

Usage: mysqlshow [OPTIONS] [database [table [column]]]

If last argument contains a shell or SQL wildcard (*,?,% or _) then only
what's matched by the wildcard is shown.
If no database is given then all matching databases are shown.
If no table is given, then all matching tables in database are shown.
If no column is given, then all matching columns and column types in table
are shown.

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql8/etc/my.cnf /usr/local/mysql8/my.cnf ~/.my.cnf 
The following groups are read: mysqlshow client
The following options may be given as the first argument:
  --print-defaults        打印默认选项
  --no-defaults           除了登录文件,不读取其他选项文件中的任意默认参数
  --defaults-file=        仅读取指定文件中的默认参数
  --defaults-extra-file=  global选项文件之后读取的指定选项文件
  --defaults-group-suffix= Also read groups with concat(group, suffix)
  --login-path=           从.mylogin.cnf中读取登录路径选项.
  --bind-address=name 使用指定的网络接口连接到MySQL Server.
  -c, --character-sets-dir=name 字符集的安装目录.
  --default-character-set=name 设置默认字符集.
  --count             显示每个表的行数.
  -C, --compress      压缩客户端和服务器之间发送的所有信息.
   -#, --debug[=#]    编写调试日志.
  --debug-check[=#]   程序退出时打印调试信息.
  --debug-info[=#]    程序退出时打印调试信息,内存和CPU统计信息.
  --default-auth=name 身份验证插件使用.
  --enable-cleartext-plugin 启用明文身份验证插件.
  -?, --help          显示帮助信息.
  -h, --host=name      MySQL服务器所在的主机.
  -i, --status        显示每个表的相关其他信息.
  -k, --keys          表索引显示.
  -p, --password[=name] 连接MySQL服务器时使用的密码.
  --plugin-dir=name   安装插件的目录.
  -P, --port=#        连接服务器的端口,默认3307.
  --protocol=name     使用的传输协议 (tcp, socket, pipe, memory).
  -t, --show-table-type 显示表类型.
  -S, --socket=name   指定socket.
  --server-public-key-path=name 包含RSA公钥文件的路径名.
  --get-server-public-key 	从服务器请求RSA公钥.
  --ssl-mode=name     与服务器连接的所需SSL 
  --ssl-ca=name       包含受信任的SSL证书颁发机构列表的文件    
  --ssl-capath=name   包含受信任的SSL证书颁发机构证书文件的目录    
  --ssl-cert=name     包含X.509证书的文件    
  --ssl-cipher=name   连接加密的允许密码    
  --ssl-key=name      包含X.509密钥的文件  
  --ssl-crl=name      包含证书吊销列表的文件    
  --ssl-crlpath=name  包含证书吊销列表文件的目录 
  --ssl-fips-mode=name 是否在客户端启用FIPS模式,允许的值有: OFF, ON, STRICT     
  --tls-ciphersuites=name 允许的TLSv1.3密码套件用于加密连接
  --tls-version=name  允许的TLS协议进行加密连接,允许的值有: TLSv1, TLSv1.1, TLSv1.2, TLSv1.3
  -u, --user=name      连接服务器时要使用的MySQL用户名.
  -v, --verbose       详细信息.
  -V, --version       显示版本信息.
  --compression-algorithms=name 用于服务器连接的压缩算法.
  --zstd-compression-level=# 用于与使用zstd压缩算法的服务器的连接的压缩级别。允许的级别为1到22,其中较大的值表示压缩级别增加。默认 zstd压缩级别为3。压缩级别设置对不使用zstd压缩的连接无效。

Variables (--variable-name=value)
and boolean options {FALSE|TRUE}  Value (after reading options)
--------------------------------- ----------------------------------------
bind-address                      (No default value)
character-sets-dir                (No default value)
default-character-set             auto
count                             FALSE
compress                          FALSE
debug-check                       FALSE
debug-info                        FALSE
default-auth                      (No default value)
enable-cleartext-plugin           FALSE
host                              (No default value)
status                            FALSE
keys                              FALSE
plugin-dir                        (No default value)
port                              0
show-table-type                   FALSE
socket                            (No default value)
server-public-key-path            (No default value)
get-server-public-key             FALSE
ssl-ca                            (No default value)
ssl-capath                        (No default value)
ssl-cert                          (No default value)
ssl-cipher                        (No default value)
ssl-key                           (No default value)
ssl-crl                           (No default value)
ssl-crlpath                       (No default value)
tls-version                       (No default value)
tls-ciphersuites                  (No default value)
user                              (No default value)
compression-algorithms            (No default value)
zstd-compression-level            3

2. mysqlshow示例

  上面列出来的有点复杂化了,罗列一下常用的几个:

  • 显示每个表的详细信息
    [root@chengyu ~]# mysqlshow -uroot -p -i dbcy
  • 显示表索引信息
    [root@chengyu ~]# mysqlshow -uroot -p --show-table-type dbcy

  更全面的有关数据库,表,列或有关服务器的状态信息的信息还是要回归到常规的show命令行:

SHOW {BINARY | MASTER} LOGS
SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]
SHOW CHARACTER SET [like_or_where]
SHOW COLLATION [like_or_where]
SHOW [FULL] COLUMNS FROM tbl_name [FROM db_name] [like_or_where]
SHOW CREATE DATABASE db_name
SHOW CREATE EVENT event_name
SHOW CREATE FUNCTION func_name
SHOW CREATE PROCEDURE proc_name
SHOW CREATE TABLE tbl_name
SHOW CREATE TRIGGER trigger_name
SHOW CREATE VIEW view_name
SHOW DATABASES [like_or_where]
SHOW ENGINE engine_name {STATUS | MUTEX}
SHOW [STORAGE] ENGINES
SHOW ERRORS [LIMIT [offset,] row_count]
SHOW EVENTS
SHOW FUNCTION CODE func_name
SHOW FUNCTION STATUS [like_or_where]
SHOW GRANTS FOR user
SHOW INDEX FROM tbl_name [FROM db_name]
SHOW MASTER STATUS
SHOW OPEN TABLES [FROM db_name] [like_or_where]
SHOW PLUGINS
SHOW PROCEDURE CODE proc_name
SHOW PROCEDURE STATUS [like_or_where]
SHOW PRIVILEGES
SHOW [FULL] PROCESSLIST
SHOW PROFILE [types] [FOR QUERY n] [OFFSET n] [LIMIT n]
SHOW PROFILES
SHOW RELAYLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]
SHOW SLAVE HOSTS
SHOW SLAVE STATUS [FOR CHANNEL channel]
SHOW [GLOBAL | SESSION] STATUS [like_or_where]
SHOW TABLE STATUS [FROM db_name] [like_or_where]
SHOW [FULL] TABLES [FROM db_name] [like_or_where]
SHOW TRIGGERS [FROM db_name] [like_or_where]
SHOW [GLOBAL | SESSION] VARIABLES [like_or_where]
SHOW WARNINGS [LIMIT [offset,] row_count]

like_or_where: {
    LIKE 'pattern'
  | WHERE expr
}

2020年07月01日

  指着楼下草坪上蹦跶的鸟儿,MM跟爸爸说:爸爸,我想下楼跟小鸟交换玩具。

  7月来咯,吼吼,七月是安生的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章